当前位置: 首页 > news >正文

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, QtWidgetsclass 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.translateForm.setWindowTitle(_translate("Form", "Form"))

Main测试代码:

"""python加载ui文件作者 : 小锋老师官网 : www.python222.com
"""
import sysfrom PyQt6.QtGui import QStandardItemModel, QStandardItem
from PyQt6.QtWidgets import QApplication, QTreeView
from PyQt6 import uic, QtGuiif __name__ == '__main__':app = QApplication(sys.argv)ui = uic.loadUi("./QTreeView树视图.ui")myTreeView: QTreeView = ui.treeViewmodel = 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())

http://www.lryc.cn/news/259519.html

相关文章:

  • 链表|148. 排序链表
  • 如何解决5G基站高能耗问题?
  • PyTorch实现逻辑回归
  • 什么是FPGA原型验证?
  • 基于VUE3+Layui从头搭建通用后台管理系统(前端篇)十四:系统设置模块相关功能实现
  • 使用Visual Studio(VS)创建空项目的Win32桌面应用程序【main函数入口变WinMain】
  • 基于自动化脚本批量上传依赖到nexus内网私服
  • Linux中ps命令使用指南
  • PHP开发语言中,网页端常用的标签
  • Java 入门第四篇 集合
  • VBA技术资料MF93:将多个Excel表插入PowerPoint不同位置
  • STM32 MCU的易坑点收集
  • Vue3项目filter.js组件封装
  • Linux: pwd命令查看当前工作目录
  • 【深度学习】PHP操作mysql数据库总结
  • 【送书活动】探究AIGC、AGI、GPT和人工智能大模型
  • Apple Find My「查找」认证芯片找哪家,认准伦茨科技ST17H6x芯片
  • java.lang.IllegalArgumentException: Could not resolve placeholder XXX‘ in value
  • 自动机器学习是什么?概念及应用
  • el-date-picker限制选择7天内禁止内框选择
  • Navicat 技术指引 | 适用于 GaussDB 分布式的调试器
  • 人工智能导论习题集(3)
  • 2023一起益企广东省中小企业数字化赋能活动(深圳站)成功举办
  • MySQL之创建表
  • 选择大于努力-鸿蒙开发应用不适合当前企业的现状态(头部应用除外)推荐一套款平台框架可以写安卓iOS 鸿蒙为企业开源节流
  • 2023.12.12 关于 Java 反射详解
  • 【Qt QML入门】Image
  • Spark编程入门
  • JVM 内存分析工具 Memory Analyzer Tool(MAT)的深度讲解
  • 浅谈 USB Bulk 深入浅出 (3) - USB Bulk 装置传输的注意事项