Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PyQt中的拖放功能重新排序QTreeWidget中的项目_Python_Pyqt_Drag And Drop_Qtreewidget - Fatal编程技术网

Python 使用PyQt中的拖放功能重新排序QTreeWidget中的项目

Python 使用PyQt中的拖放功能重新排序QTreeWidget中的项目,python,pyqt,drag-and-drop,qtreewidget,Python,Pyqt,Drag And Drop,Qtreewidget,我有一个QTreeWidget,其中包含我认为所有正确的设置,以便能够通过拖动项目来重新排序项目。它有时可以工作,但我经常会将一个项目拖到另一个项目中,它要么消失,要么变成子项目 有没有办法防止这种情况发生,这样你就不会丢失要重新订购的物品?我认为您可以在Qt Designer中实现这一点。我将dragDrop模式设置为InternalMove,将defaultDropAction设置为MoveAction,但我甚至不确定这两种模式是否都是我需要调整的 提前谢谢 您可以将标志添加到控制拖放行为(

我有一个QTreeWidget,其中包含我认为所有正确的设置,以便能够通过拖动项目来重新排序项目。它有时可以工作,但我经常会将一个项目拖到另一个项目中,它要么消失,要么变成子项目

有没有办法防止这种情况发生,这样你就不会丢失要重新订购的物品?我认为您可以在Qt Designer中实现这一点。我将dragDrop模式设置为InternalMove,将defaultDropAction设置为MoveAction,但我甚至不确定这两种模式是否都是我需要调整的


提前谢谢

您可以将标志添加到控制拖放行为(以及其他内容)的单个树小部件项中。例如,要防止某个项目成为放置目标,请尝试以下操作:

item = QTreeWidgetItem(parent)
item.setFlags(items.flags() & ~Qt.ItemIsDropEnabled)
有关详细信息,请参阅: