【问题标题】:How to select or highlight all items in a QTreeWidget?如何选择或突出显示 QTreeWidget 中的所有项目?
【发布时间】:2016-06-11 08:31:10
【问题描述】:

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

【问题讨论】:

    标签: python pyqt pyqt4 qtreewidget qtreewidgetitem


    【解决方案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_()
    

    它看起来像:

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-17
        • 1970-01-01
        • 2012-05-26
        • 2012-06-23
        • 2013-04-07
        相关资源
        最近更新 更多