PyQt6 QTreeView树视图

锋哥原创的PyQt6视频教程:

2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

QTreeView类,它是树控件的基类,使用时,必须为其提供一个模型来与之配合。

QTreeView类的常用方法:

方法说明
autoExpandDelay()获取自动展开节点所需的延时时间
collapse()收缩指定级的节点
collapseAll()收缩所有节点
expand()展开指定级的节点
expandAll()展开所有节点
header()树的头信息,常用的有一个setVisible(方法,用来设置是否显示头
isHeaderHidder()判断是否隐藏头部
setAutoExpandDelay()设置自动展开的延时时间,单位为毫秒,如果值小于0,表示禁用自动展开
setAlternatingRowColors()设置每间隔一行颜色是否一样
setExpanded()根据索引设置是否展开节点
setHeaderHidden()设置是否隐藏头部
setItemsExpandable()设置项是否展开
setModel()设置要显示的数据模型
setSortingEnabled()设置单击头部时是否可以排序
setVerticalScrollBarPolicy()设置是否显示垂直滚动条
setHorizontalScrollBarPolicy()设置是否显示水平滚动条
setEditTriggers()设置默认的编辑触发器
setExpandsOnDoubleClick()设置是否支持双击展开树节点
setWordWrap()设置自动换行
sclectionModel()获取选中的模型
sortByColumn()根据列排序
setSelectionMode()设置选中模式,取值如下。 QAbstractItemView.NoSelection:不能选择; QAbstractItemView.SingleSelection:单选; QAbstractItemView.MultiSelection:多选; QAbstractItemView.ExtendedSelection:正常单选,按Ctrl或者Shift键后,可以多选; QAbstractItemView.ContiguousSelection:与 ExtendedSelection类似
setSelectionBehavior()设置选中方式,取值如下。 QAbstractItemView.SelectItems:选中当前项; QAbstractItemView.SelectRows:选中整行; QAbstractItemView.SelectColumns:选中整列

QTreeView 类属性

  • autoExpandDelay 拖放操作期间打开树中项目之前的延迟时间

  • indentation 树视图中项目的缩进

  • rootIsDecorated 是否显示用于展开和折叠顶级项目的控件

  • uniformRowHeights 所有项目是否具有相同的高度

  • itemsExpandable 项目是否可由用户展开

  • animated 是否启用动画

  • allColumnsShowFocus 项目是否应使用所有列显示键盘焦点

  • wordWrap 文本自动换行策略

  • headerHidden 标头是否显示

  • expandsOnDoubleClick 是否可以通过双击扩展项目

QTreeWidget 类属性

  • columnCount 显示的列数

Header 属性

  • headerVisible 是否显示标题

  • headerCascadingSectionResizes 标题列宽联动调整大小

  • headerDefaultSectionSize 默认标题列宽大小

  • headerHighlightSections 所选项目的部分是否突出显示

  • headerMinimumSectionSize 标题可调节的最小尺寸

  • headerShowSortIndicator 标题显示排序指示器

  • headerStretchLastSection 是否可调节最后一列的宽度

PyQt6提供的内置模型:

模型说明
QStringListModel存储简单的字符串列表
QStandardItemModel可以用于树结构的存储,提供了层次数据
QFileSystemModel存储本地系统的文件和目录信息(针对当前项目)
QSqlQueryModel存储SQL的查询结构集
QSqlTableModel存储SQL中的表格数据
QSqlRelationalTableModel存储有外键关系的SOL表格数据
QSortFilterProxyModel对模型中的数据进行排序或者过滤

UI生成代码:

from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(702, 716)
        self.treeView = QtWidgets.QTreeView(parent=Form)
        self.treeView.setGeometry(QtCore.QRect(80, 40, 256, 192))
        self.treeView.setObjectName("treeView")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))

Main测试代码:

"""
    python加载ui文件
    作者 : 小锋老师
    官网 : www.python222.com
"""
import sys

from PyQt6.QtGui import QStandardItemModel, QStandardItem
from PyQt6.QtWidgets import QApplication, QTreeView
from PyQt6 import uic, QtGui

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = uic.loadUi("./QTreeView树视图.ui")
    myTreeView: QTreeView = ui.treeView

    model = QStandardItemModel()

    model.setHorizontalHeaderLabels(['分类', '书名', '作者', '价格'])

    bookType1 = QStandardItem("Java类")
    bookType1.appendRow(
        [QStandardItem(""), QStandardItem('Java编程思想'), QStandardItem('埃克尔'), QStandardItem('109')])  # 添加二级节点
    bookType1.appendRow(
        [QStandardItem(""), QStandardItem('Java从入门到精通'), QStandardItem('码牛逼'), QStandardItem('99')])  # 添加二级节点

    model.appendRow(bookType1)  # 添加一级节点

    bookType2 = QStandardItem("Python类")
    bookType2.appendRow(
        [QStandardItem(""), QStandardItem('Python编程思想'), QStandardItem('老王'), QStandardItem('10')])  # 添加二级节点
    bookType2.appendRow(
        [QStandardItem(""), QStandardItem('Python跟我学'), QStandardItem('老六'), QStandardItem('20')])  # 添加二级节点
    model.appendRow(bookType2)  # 添加一级节点

    bookType3 = QStandardItem("Go类")
    bookType3.appendRow(
        [QStandardItem(""), QStandardItem('Go编程思想'), QStandardItem('老王'), QStandardItem('10')])  # 添加二级节点
    model.appendRow(bookType3)  # 添加一级节点

    myTreeView.setModel(model)

    myTreeView.expandAll()

    ui.show()

    sys.exit(app.exec())

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值