在 PyQt 中使用拖放重新排序 QTreeWidget 中的项目

Posted

技术标签:

【中文标题】在 PyQt 中使用拖放重新排序 QTreeWidget 中的项目【英文标题】:Reordering items in a QTreeWidget with Drag and Drop in PyQt 【发布时间】:2011-10-05 19:44:30 【问题描述】:

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

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

提前致谢!

【问题讨论】:

【参考方案1】:

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

item = QTreeWidgetItem(parent)
item.setFlags(items.flags() & ~Qt.ItemIsDropEnabled)

更多详情请见:Qt.ItemFlags

【讨论】:

以上是关于在 PyQt 中使用拖放重新排序 QTreeWidget 中的项目的主要内容,如果未能解决你的问题,请参考以下文章

PyQt QListView 拖放问题,用于在一个列表中导入和重新排列

qt: pyqt: QTreeView 内部拖放几乎可以正常工作...被拖动的项目消失了

PyQt5 QListView 拖放创建新的隐藏项

在 PyQt 中支持拖放的 QTreeView

重新排序包含跨列的 QTableView 行

在angularjs中对表格的行进行排序或重新排列(拖放)