PyQt学习笔记(11)--QTreeWidget

   QTreeWidget的继承关系如下图:

PyQt学习笔记(11)--QTreeWidget_第1张图片

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

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

# !/usr/bin/python
import sys

from PyQt4.QtGui import *
from PyQt4.QtCore import *

class TreeWidget(QMainWindow):
    def __init__(self,parent=None):
        QWidget.__init__(self,parent)
        
        self.setWindowTitle('TreeWidget')
        #创建一个Qtree部件
        self.tree = QTreeWidget()
        #设置部件的列数为2
        self.tree.setColumnCount(2)
        #设置头部信息,因为上面设置列数为2,所以要设置两个标识符
        self.tree.setHeaderLabels(['Key','Value'])
        
        #设置root为self.tree的子树,所以root就是跟节点
        root= QTreeWidgetItem(self.tree)
        #设置根节点的名称
        root.setText(0,'root')
        
        #为root节点设置子结点
        child1 = QTreeWidgetItem(root)
        child1.setText(0,'child1')
        child1.setText(1,'name1')
        child2 = QTreeWidgetItem(root)
        child2.setText(0,'child2')
        child2.setText(1,'name2')
        child3 = QTreeWidgetItem(root)
        child3.setText(0,'child3')
        child4 = QTreeWidgetItem(child3)
        child4.setText(0,'child4')
        child4.setText(1,'name4')
        
        self.tree.addTopLevelItem(root)
        #将tree部件设置为该窗口的核心框架
        self.setCentralWidget(self.tree)
        
app = QApplication(sys.argv)
app.aboutToQuit.connect(app.deleteLater)
tp = TreeWidget()
tp.show()
app.exec_()
    运行结果如下:

PyQt学习笔记(11)--QTreeWidget_第2张图片
    其中的 QtreeWidgetItem就是一一的添加的,其实还是不太方便的。在应用程序中一般不是这样来创建 QTreeView的,特别是比较复杂的Tree,一般都是通过QTreeView来实现而不是QTreeWidget来实现的。这种与 QTreeWidget最大的区别就是,我们自己来定制模式,当然也有些系统提供给我们的模式,比如我们的文件系统盘的树列表,比如下面的:
import sys
from PyQt4 import QtCore, QtGui
#直接运行程序时的入口
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    app.aboutToQuit.connect(app.deleteLater)
    #Window系统提供的模式
    model = QtGui.QDirModel()
    #创建一个QtreeView部件
    tree = QtGui.QTreeView()
    #为部件添加模式
    tree.setModel(model)
    tree.setWindowTitle(tree.tr("Dir View"))
    tree.resize(640, 480)
    tree.show()
    sys.exit(app.exec_())
    运行结果如下:
PyQt学习笔记(11)--QTreeWidget_第3张图片
    一般的话model = TreeModel(需要处理的数据)可以让我们自己定制如何显示数据,其中的TreeModel类是我们自己写的,可以查阅相关资料。

你可能感兴趣的:(PyQt编程(python,GUI))