生活会辜负努力的人,但不会辜负一直努力的人

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

转载: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类是我们自己写的,可以查阅相关资料。
posted on 2018-05-11 11:58  何许亻也  阅读(6533)  评论(0编辑  收藏  举报