PyQt5之TreeWidget树形控件的使用(二)

TreeWidget 详解

  • 定义
  • 类的常用方法及说明
    • QTreeWidget类
    • QTreeWidgetItem类
  • 创建TreeWidget控件


定义

TreeWidget树控件对应 PyQt5 中的QTreeWidget类,即,在Qt中,我们可以通过QTreeWidget类构造树形结构。QTreeWidget以树的形式显示各个项,每个树节点(项)使用QTreeWidgetItem来表示,是界面编程中的一个重要控件。本文对有关QTreeWidget的基本知识点进行了总结。。

类的常用方法及说明

QTreeWidget类

方法 说明
addTopLevelItem() 添加顶级节点
insertTopLevelItems() 在树的顶层索引中插入节点
setColumnCount() 设置树结构中的列数
setColumnWidth() 设置列的宽度

QTreeWidgetItem类

方法 说明
setText() 设置节点文本
text() 获取节点文本
setIcon() 设置节点图标
setHeaderLabels() 设置列标题名

创建TreeWidget控件

树形结构实现
通过向QTreeWidget添加顶层节点,顶层节点添加子节点,依次这样添加节点的方式构造树形结构。

相关代码片(示例如下):

self.treeWidget.setColumnCount(2)   #设置树结构中的列数
        self.treeWidget.setHeaderLabels(["成员", "职责"])   #设置列标题名
        self.treeWidget.setColumnWidth(0,150)
        self.treeWidget.setColumnWidth(1,280)
        root = QTreeWidgetItem(self.treeWidget)     #创建节点
        root.setText(0, "班委成员(顶级节点)")     #设置顶级节点文本
        dict = {'班长':' 日常工作开展的总协调人',
         		'副班长':' 协助班长开展工作', 
         		'学习委员':' 负责开展班级学习工作',
             	'纪律委员':' 负责开展班级纪律检查工作',
             	'劳动委员':' 负责班级卫生和劳动工作'}
        for key, value in dict.items():     #遍历字典
            child = QTreeWidgetItem(root)   #创建子节点
            child.setText(0, key)   #设置第一列的值
            child.setText(1, value) #设置第二列的值
            self.treeWidget.setAlternatingRowColors(True)
            self.treeWidget.addTopLevelItem(root)   #将创建的树节点添加到树控件中

程序运行效果

PyQt5之TreeWidget树形控件的使用(二)_第1张图片
添加图标
在上面的代码基础上添加这条语句,可以为树形节点添加图标:

item.setIcon(1, QtGui.QIcon('images/*.jpg'))
...

程序运行效果

PyQt5之TreeWidget树形控件的使用(二)_第2张图片
添加复选框
向树形结构添加checkBox:

item.setCheckState(0, QtCore.Qt.Unchecked)
...

程序运行效果
PyQt5之TreeWidget树形控件的使用(二)_第3张图片
信号连接自定义槽函数
鼠标双击TreeWidgetItem,QTreeWidget发出双击信号,自定义的Ui_MainWindow类接收后,调用自定义的槽函数。那么connect函数为:

self.treeWidget.clicked.connect(self.gettext)

def gettext(self,currentItem):
    from PyQt5.QtWidgets import QMessageBox
    QMessageBox.information(MainWindow, "提示", "选中的是"+self.treeWidget.currentItem().text(0)+"该成员职能是"+self.treeWidget.currentItem().text(1), QMessageBox.Ok)

程序运行效果
PyQt5之TreeWidget树形控件的使用(二)_第4张图片


你可能感兴趣的:(PyQt5,GUI设计,python,qt5,开发语言)