PyQt--QTreeWidget

转载:loster_Liapp

 QTreeWidget的继承关系以下图:框架

 

由于继承关系是 QAbstractItemView->QTreeView->QTreeWidget  ,因此和QTableWidget不少地方是相似的。ui

若是须要特定的模式,如显示硬盘信息及内部文件的 dir模式等,都须要用QTreeView,而不是用 QTreeWidget。和 QTableWidget相似,通常步骤是先建立一个 QTreeWidget实例,而后设置列数,而后再添加 。spa

 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_()

 

运行结果以下:.net

其中的 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_())

 运行结果以下:code

 
通常的话model = TreeModel(须要处理的数据)可让咱们本身定制如何显示数据,其中的TreeModel类是咱们本身写的,能够查阅相关资料。
本站公众号
   欢迎关注本站公众号,获取更多信息