Я пытаюсь создать контекстное меню, которое пользователь может щелкнуть правой кнопкой мыши по QTreeWidget и выбрать все элементы.Как выбрать или выделить все элементы в QTreeWidget?
1
A
ответ
0
Вот путь, который будет рекурсивно проходить через каждый элемент и его детей и выбирать их все. Он использует преимущество invisibleRootItem
в корне каждого QTreeWidget
. Вы также можете передать любой элемент в дереве этой функции и выбрать этот элемент и все его дочерние элементы.
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)
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_()
и это выглядит следующим образом: