PyQt6 QTreeView树视图
2023-12-14 09:37:36
锋哥原创的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())
文章来源:https://blog.csdn.net/caoli201314/article/details/134986756
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!