【发布时间】:2016-06-11 08:31:10
【问题描述】:
我正在尝试构建一个上下文菜单,用户可以右键单击 QTreeWidget 并选择所有项目。
【问题讨论】:
标签: python pyqt pyqt4 qtreewidget qtreewidgetitem
我正在尝试构建一个上下文菜单,用户可以右键单击 QTreeWidget 并选择所有项目。
【问题讨论】:
标签: python pyqt pyqt4 qtreewidget qtreewidgetitem
您可以使用QTreeView.selectAll(),但只有在将选择模式设置为允许多选(使用QAbstractItemView.setSelectionMode())之后。
示例(在 PyQt4 中使用 QtGui 而不是 QtWidgets):
from PyQt5 import QtWidgets
app = QtWidgets.QApplication([])
widget = QtWidgets.QTreeWidget()
widget.addTopLevelItems([QtWidgets.QTreeWidgetItem(['dog']), QtWidgets.QTreeWidgetItem(['car'])])
widget.setSelectionMode(QtWidgets.QAbstractItemView.ContiguousSelection)
widget.selectAll()
widget.show()
app.exec_()
它看起来像:
【讨论】:
这是一种递归遍历每个项目及其子项并将它们全部选中的方法。它利用了每个QTreeWidget 根部的invisibleRootItem。您还可以将树中的任何项目传递给此函数,它会选择该项目及其所有子项。
def select_item(item)
item.setSelected(True)
for i in range(item.childCount()):
child = item.child(i)
select_item(child)
item = tree.invisibleRootItem()
select_item(item)
【讨论】: