我有一个 ViewMode 设置为 IconMode 的 QListView。我想实现以下 DnD 行为:
- 如果在视图内拖动列表视图项目,则仅更改项目在视图中的位置。这与将 DragDropMode 设置为 InternalMove 相同。
- 如果将列表项移出视图,则可以将其复制到另一个外部视图。在这种情况下,DragDropMode 等于 DragOnly。
如何以视图支持两种行为的方式混合这两种模式?
我有一个 ViewMode 设置为 IconMode 的 QListView。我想实现以下 DnD 行为:
如何以视图支持两种行为的方式混合这两种模式?
您可以通过覆盖视图的dropEvent来做到这一点,如下所示:
void MyListView::dropEvent( QDropEvent* e )
{
if( e->source() != this )
{
// something comes from the outside
// what to do? return?
return;
}
else
{
// event comes from the view itself, let's do some stuff
// for example call the base class default event
QAbstractItemView::dropEvent(e);
}
}
我想正确的标志是QAbstractItemView::DragDrop
这样做。