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類是咱們本身寫的,能夠查閱相關資料。
本站公眾號
   歡迎關注本站公眾號,獲取更多信息