小编Sco*_*son的帖子

pyside qtreewidget限制拖放

我正在尝试向QTreeWidget拖放功能添加约束,以防止分支进入另一个根中的另一个分支.

这是一个让事情更清楚的例子:
我有4个对象.让我们称他们为苹果,香蕉,胡萝卜,榴莲.

树看起来像这样:

isDelicious (Root)
|-- BackgroundObjects (Branch)
   |-- Durian
|-- ForgroundObjects (Branch)
   |-- Apple
   |-- Banana
   |-- Carrot
isSmelly (Root)
|-- BackgroundObjects (Branch)
   |-- Apple
   |-- Carrot
|-- ForgroundObjects (Branch)
   |-- Banana
   |-- Durian
Run Code Online (Sandbox Code Playgroud)

因此,允许将对象从BackgroundObjects拖放到ForgroundObjects,反之亦然,但是不允许将它们拖放到不同根目录上的分支上.

我已经尝试重新实现和子类化dragMoveEvent,dragEnterEvent和dropEvent,如果我在dragEnterEvent中对事件调用accept,它将调用dragMoveEvent(我期望).但是,只有当我退出QTreeWidget时才会调用dropEvent.

我想要做的是在移动之前检查所选对象的祖父母,以及建议的新祖父母以查看它们是否相同.如果是,那么接受此举.否则忽略此举.

我已经搜索过是否有任何答案,到目前为止我还没有看到任何我正在尝试做的事情.可能最接近的是来自Stack Overflow的这两个问题:
https
://stackoverflow.com/questions/17134289/managing-drag-and-drop-within-qtreewidgets-in-pyside qt:QTreeView - 限制拖放只发生在一个特殊的祖父母(祖先)内

python drag-and-drop maya pyside

6
推荐指数
1
解决办法
2549
查看次数

标签 统计

drag-and-drop ×1

maya ×1

pyside ×1

python ×1