• PyQt--QTreeWidget


    转载:loster_Li

     QTreeWidget的继承关系如下图:

    因为继承关系是 QAbstractItemView->QTreeView->QTreeWidget  ,所以和QTableWidget很多地方是类似的。

    如果需要特定的模式,如显示硬盘信息及内部文件的 dir模式等,都需要用QTreeView,而不是用 QTreeWidget。和 QTableWidget类似,一般步骤是先创建一个 QTreeWidget实例,然后设置列数,然后再添加 。

     1 import sys
     2 from PyQt4.QtGui import *
     3 
     4   
     5 class TreeWidget(QMainWindow):
     6     def __init__(self):
     7         super(TreeWidget, self).__init__()
     8         self.setWindowTitle('TreeWidget')
     9         self.tree = QTreeWidget()  # 实例化一个TreeWidget对象
    10         self.tree.setColumnCount(2)  # 设置部件的列数为2
    11         self.tree.setHeaderLabels(['Key', 'Value'])  # 设置头部信息对应列的标识符
    12 
    13         # 设置root为self.tree的子树,故root是根节点
    14         root = QTreeWidgetItem(self.tree)
    15         root.setText(0, 'root')  # 设置根节点的名称
    16 
    17         # 为root节点设置子结点
    18         child1 = QTreeWidgetItem(root)
    19         child1.setText(0, 'child1')
    20         child1.setText(1, 'name1')
    21         child2 = QTreeWidgetItem(root)
    22         child2.setText(0, 'child2')
    23         child2.setText(1, 'name2')
    24         child3 = QTreeWidgetItem(root)
    25         child3.setText(0, 'child3')
    26         child4 = QTreeWidgetItem(child3)
    27         child4.setText(0, 'child4')
    28         child4.setText(1, 'name4')
    29 
    30         self.tree.addTopLevelItem(root)
    31         self.setCentralWidget(self.tree)  # 将tree部件设置为该窗口的核心框架
    32 
    33 app = QApplication(sys.argv)
    34 app.aboutToQuit.connect(app.deleteLater)
    35 tp = TreeWidget()
    36 tp.show()
    37 app.exec_()

    运行结果如下:

    其中的 QtreeWidgetItem就是一一的添加的,其实还是不太方便的。
    在应用程序中一般不是这样来创建 QTreeView的,特别是比较复杂的Tree,一般都是通过QTreeView来实现而不是QTreeWidget来实现的。
    这种与 QTreeWidget最大的区别就是,我们自己来定制模式,当然也有些系统提供给我们的模式,比如我们的文件系统盘的树列表,比如下面的:
     1 import sys
     2 from PyQt4 import QtGui
     3 
     4 
     5 # 直接运行程序时的入口
     6 if __name__ == "__main__":
     7     app = QtGui.QApplication(sys.argv)
     8     app.aboutToQuit.connect(app.deleteLater)
     9 
    10     model = QtGui.QDirModel()   # Windows系统提供的模式
    11     tree = QtGui.QTreeView()  # 实例化一个QtreeView对象
    12     tree.setModel(model)  # 为部件添加模式
    13     tree.setWindowTitle(tree.tr("Dir View"))
    14     tree.resize(640, 480)
    15     tree.show()
    16     sys.exit(app.exec_())

     运行结果如下:

     
    一般的话model = TreeModel(需要处理的数据)可以让我们自己定制如何显示数据,其中的TreeModel类是我们自己写的,可以查阅相关资料。
  • 相关阅读:
    org-mode
    MediaWiki
    Creole
    AsciiDoc
    markdown
    图像对比度调整的simulink仿真总结
    Altera的几个常用的Synthesis attributes(转载)
    红外发送接收电路(转载)
    使用反相器的rc振荡电路
    两个小电路
  • 原文地址:https://www.cnblogs.com/fuqia/p/9023836.html
Copyright © 2020-2023  润新知