如何选择或突出显示QTreeWidget中的所有项目?

时间:2016-06-11 08:31:10

标签: python pyqt pyqt4 qtreewidget qtreewidgetitem

我正在尝试构建一个上下文菜单,用户可以右键单击QTreeWidget并选择所有项目。

2 个答案:

答案 0 :(得分:1)

您可以使用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_()

看起来像:

enter image description here

答案 1 :(得分:0)

这是一种以递归方式遍历每个项目及其子项并将其全部选中的方法。它利用了每个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)