QTreeWidget 详解

QTreeWidget 详解

QTreeWidget 是 PyQt5 框架中的一个重要部件,它提供了树形结构的视图,可以用于显示层级数据。以下是 QTreeWidget 的详细讲解,包括基本用法、主要方法和属性以及如何与其他组件进行交互。

基本用法

  1. 导入模块 要使用 QTreeWidget,首先需要导入相关模块:

    from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QApplication
    import sys
    
  2. 创建 QTreeWidget 实例 创建 QTreeWidget 的实例并设置其列数和列标题:

    app = QApplication(sys.argv)
    tree = QTreeWidget()
    tree.setColumnCount(2)
    tree.setHeaderLabels(["Column 1", "Column 2"])
    
  3. 添加顶层项和子项 添加顶层项(根项)和子项:

    root = QTreeWidgetItem(tree)
    root.setText(0, "Root Item 1")
    root.setText(1, "Root Item 1 Description")
    
    child1 = QTreeWidgetItem(root)
    child1.setText(0, "Child 1")
    child1.setText(1, "Child 1 Description")
    
    child2 = QTreeWidgetItem(root)
    child2.setText(0, "Child 2")
    child2.setText(1, "Child 2 Description")
    
  4. 显示窗口 设置窗口大小并显示:

    tree.setWindowTitle("QTreeWidget Example")
    tree.resize(400, 300)
    tree.show()
    sys.exit(app.exec_())
    

主要方法和属性

  • 添加和删除项
    • addTopLevelItem(item): 添加顶层项。
    • addTopLevelItems(items): 添加多个顶层项。
    • takeTopLevelItem(index): 删除并返回指定索引的顶层项。
    • clear(): 清空所有项。
  • 项操作
    • setText(column, text): 设置指定列的文本。
    • text(column): 获取指定列的文本。
    • addChild(child): 为当前项添加子项。
    • takeChild(index): 删除并返回指定索引的子项。
    • child(index): 返回指定索引的子项。
    • childCount(): 返回子项数目。
  • 信号和槽
    • itemClicked(item, column): 单击项时发射信号。
    • itemDoubleClicked(item, column): 双击项时发射信号。
    • itemChanged(item, column): 项目改变时发射信号。

代码示例

以下是一个完整的示例,展示了如何使用 QTreeWidget 以及如何响应用户的交互:

from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem, QApplication, QVBoxLayout, QWidget, QLabel
import sys

class TreeWidgetDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('QTreeWidget Demo')
        self.setGeometry(100, 100, 600, 400)

        self.tree = QTreeWidget(self)
        self.tree.setColumnCount(2)
        self.tree.setHeaderLabels(['Name', 'Description'])

        root1 = QTreeWidgetItem(self.tree)
        root1.setText(0, 'Root 1')
        root1.setText(1, 'Root 1 Description')

        child1 = QTreeWidgetItem(root1)
        child1.setText(0, 'Child 1')
        child1.setText(1, 'Child 1 Description')

        child2 = QTreeWidgetItem(root1)
        child2.setText(0, 'Child 2')
        child2.setText(1, 'Child 2 Description')

        root2 = QTreeWidgetItem(self.tree)
        root2.setText(0, 'Root 2')
        root2.setText(1, 'Root 2 Description')

        layout = QVBoxLayout(self)
        layout.addWidget(self.tree)

        self.label = QLabel("Selected Item Info", self)
        layout.addWidget(self.label)

        self.tree.itemClicked.connect(self.onItemClicked)

        self.setLayout(layout)

    def onItemClicked(self, item, column):
        self.label.setText(f"Selected: {item.text(0)} - {item.text(1)}")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = TreeWidgetDemo()
    demo.show()
    sys.exit(app.exec_())

示例界面如图所示:

在这里插入图片描述

这个示例展示了一个包含两个顶层项和多个子项的树形视图,并且当用户点击某个项时,在窗口底部的标签中显示该项的信息。

通过上述步骤和示例,应该能够掌握 QTreeWidget 的基本用法,并在 PyQt5 应用程序中实现树形结构视图。

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Persus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值