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類是我們自己寫的,可以查閱相關資料。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM