PySide6.QtGui.QStandardItemModel¶
- class QStandardItemModel¶
QStandardItemModel类提供了一个用于存储自定义数据的通用模型。更多…概要¶
属性¶
sortRoleᅟ- 用于在排序项目时查询模型数据的项目角色
方法¶
def
__init__()def
appendColumn()def
appendRow()def
clear()def
findItems()def
indexFromItem()def
insertColumn()def
insertRow()def
item()def
itemFromIndex()def
itemPrototype()def
setColumnCount()def
setItem()def
setRowCount()def
setSortRole()def
sortRole()def
takeColumn()def
takeItem()def
takeRow()
信号¶
def
itemChanged()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QStandardItemModel可以用作标准 Qt 数据类型的存储库。它是模型/视图类之一,并且是 Qt 模型/视图框架的一部分。QStandardItemModel提供了一种经典的基于项目的方法来处理模型。QStandardItemModel中的项目由QStandardItem提供。QStandardItemModel实现了 QAbstractItemModel 接口,这意味着该模型可以用于提供数据给任何支持该接口的视图(如 QListView、QTableView 和 QTreeView,以及您自己的自定义视图)。为了性能和灵活性,您可能希望子类化 QAbstractItemModel 以提供对不同类型数据存储库的支持。例如,QFileSystemModel提供了一个模型接口来访问底层文件系统。当你需要一个列表或树时,通常创建一个空的
QStandardItemModel并使用appendRow()向模型中添加项目,使用item()访问项目。如果你的模型表示一个表格,通常将表格的维度传递给QStandardItemModel构造函数,并使用setItem()将项目定位到表格中。你也可以使用setRowCount()和setColumnCount()来改变模型的维度。要插入项目,使用insertRow()或insertColumn(),要删除项目,使用removeRow()或removeColumn()。您可以使用
setHorizontalHeaderLabels()和setVerticalHeaderLabels()来设置模型的表头标签。你可以使用
findItems()在模型中搜索项目,并通过调用sort()对模型进行排序。调用
clear()以从模型中移除所有项目。一个使用
QStandardItemModel创建表格的示例:model = QStandardItemModel(4, 4) for row in range(0, model.rowCount()): for column in range(0, model.columnCount()): item = QStandardItem(QString("row %0, column %1").arg(row).arg(column)) model.setItem(row, column, item)
一个使用
QStandardItemModel创建树的示例:model = QStandardItemModel() parentItem = model.invisibleRootItem() for i in range(0, 4): item = QStandardItem(QString("item %0").arg(i)) parentItem.appendRow(item) parentItem = item
在视图上设置模型后,通常需要对用户操作做出反应,例如点击某个项目。由于QAbstractItemView提供了基于QModelIndex的信号和函数,您需要一种方法来获取与给定QModelIndex对应的
QStandardItem,反之亦然。itemFromIndex()和indexFromItem()提供了这种映射。itemFromIndex()的典型用法包括获取视图中当前索引处的项目,以及获取与QAbstractItemView信号(如QAbstractItemView::clicked())携带的索引对应的项目。首先,您将视图的信号连接到类中的一个槽:treeView = QTreeView(self) treeView.setModel(myStandardItemModel) treeView.clicked.connect( self.clicked)
当你接收到信号时,你在给定的模型索引上调用
itemFromIndex()以获取指向项目的指针:def clicked(self, index): item = myStandardItemModel.itemFromIndex(index) # Do stuff with the item ...
相反,当你想调用一个以索引作为参数的模型/视图函数时,你必须获取项目的QModelIndex。你可以通过使用模型的
indexFromItem()函数,或者等效地调用index()来获取索引:treeView.scrollTo(item.index())
当然,您不需要使用基于项目的方法;在处理模型时,您可以完全依赖QAbstractItemModel接口,或者根据情况结合使用这两种方法。
另请参阅
QStandardItem模型/视图 编程QAbstractItemModel简单 树 模型 示例项 视图 便利 类注意
当使用
from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。- property sortRoleᅟ: int¶
此属性保存用于在排序项目时查询模型数据的项目角色。
默认值为 Qt::DisplayRole。
另请参阅
sort()sortChildren()- Access functions:
使用给定的
parent构建一个新的项目模型。- __init__(rows, columns[, parent=None])
- Parameters:
rows – int
columns – 整数
parent –
QObject
构建一个新的项目模型,该模型最初具有
rows行和columns列,并且具有给定的parent。- appendColumn(items)¶
- Parameters:
items – QStandardItem 的列表
追加一个包含
items的列。如果需要,行数将增加到items的大小。- appendRow(item)¶
- Parameters:
项目 –
QStandardItem
这是一个重载函数。
在构建只有一个列的列表或树时,此函数提供了一种方便的方式来追加一个新的
item。- appendRow(items)
- Parameters:
items – QStandardItem 的列表
追加一行包含
items。如有必要,列数将增加到items的大小。- clear()¶
从模型中移除所有项目(包括标题项目),并将行数和列数设置为零。
另请参阅
removeColumns()removeRows()- findItems(text[, flags=Qt.MatchExactly[, column=0]])¶
- Parameters:
文本 – str
flags –
MatchFlag的组合column – 整数
- Return type:
返回与给定
text匹配的项目列表,使用给定的flags,在给定的column中。- horizontalHeaderItem(column)¶
- Parameters:
列 – int
- Return type:
如果已设置,则返回
column的水平标题项;否则返回None。- indexFromItem(item)¶
- Parameters:
项目 –
QStandardItem- Return type:
返回与给定
item关联的QModelIndex。当您想要执行需要项目QModelIndex的操作时,请使用此函数,例如QAbstractItemView::scrollTo()。
index()是为了方便提供的;它等同于调用此函数。另请参阅
- insertColumn(column, items)¶
- Parameters:
column – 整数
items – QStandardItem 的列表
在
column列插入包含items的列。如有必要,行数将增加到items的大小。- insertRow(row, item)¶
- Parameters:
row – int
项目 –
QStandardItem
这是一个重载函数。
在
row处插入一行,包含item。在构建只有一个列的列表或树时,此函数提供了一种方便的方式来追加单个新项。
- insertRow(row, items)
- Parameters:
row – int
items – QStandardItem 的列表
在
row处插入一行,包含items。如有必要,列数将增加到items的大小。- invisibleRootItem()¶
- Return type:
返回模型的不可见根项。
不可见的根项通过
QStandardItemAPI提供了对模型顶层项的访问,使得可以编写能够以统一方式处理顶层项及其子项的函数;例如,涉及树模型的递归函数。注意
从此函数检索到的
QStandardItem对象上调用index()是无效的。- item(row[, column=0])¶
- Parameters:
row – int
column – 整数
- Return type:
返回给定
row和column的项,如果已设置;否则返回None。- itemChanged(item)¶
- Parameters:
项目 –
QStandardItem
每当
item的数据发生变化时,都会发出此信号。- itemFromIndex(index)¶
- Parameters:
索引 –
QModelIndex- Return type:
返回一个指向与给定
index关联的QStandardItem的指针。调用此函数通常是处理来自视图的基于QModelIndex的信号(如QAbstractItemView::activated())时的初始步骤。在您的槽函数中,您调用itemFromIndex(),并将信号携带的QModelIndex作为参数传递,以获取指向相应
QStandardItem的指针。请注意,如果该索引处尚不存在任何项目,此函数将懒散地创建一个项目(使用
itemPrototype()),并将其设置在父项目的子表中。如果
index是一个无效的索引,此函数将返回None。另请参阅
- itemPrototype()¶
- Return type:
返回模型使用的项目原型。当模型需要按需构造新项目时(例如,当视图或项目委托调用
setData()时),模型使用项目原型作为项目工厂。另请参阅
- setColumnCount(columns)¶
- Parameters:
columns – int
将此模型中的列数设置为
columns。如果这小于columnCount(),则不需要的列中的数据将被丢弃。另请参阅
columnCount()setRowCount()- setHorizontalHeaderItem(column, item)¶
- Parameters:
column – 整数
项目 –
QStandardItem
将
column的水平标题项设置为item。模型将拥有该项目的所有权。如有必要,列数将增加以适应该项目。先前的标题项(如果有的话)将被删除。- setHorizontalHeaderLabels(labels)¶
- Parameters:
labels – 字符串列表
使用
labels设置水平标题标签。如有必要,列数将增加到labels的大小。- setItem(row, item)¶
- Parameters:
row – int
项目 –
QStandardItem
这是一个重载函数。
- setItem(row, column, item)
- Parameters:
row – int
column – 整数
项目 –
QStandardItem
将给定的
row和column的项设置为item。模型拥有该项的所有权。如果需要,行数和列数会增加以适应该项。给定位置的先前项(如果有的话)将被删除。另请参阅
- setItemPrototype(item)¶
- Parameters:
项目 –
QStandardItem
将模型的项原型设置为指定的
item。模型将拥有该原型的所有权。项目原型通过依赖
clone()函数,充当QStandardItem的工厂。要提供您自己的原型,请子类化QStandardItem,重新实现clone(),并将原型设置为您的自定义类的实例。每当QStandardItemModel需要按需创建项目时(例如,当视图或项目委托调用setData()时),新项目将是您的自定义类的实例。另请参阅
- setItemRoleNames(roleNames)¶
- Parameters:
roleNames – 字典,键类型为 .int,值类型为 QByteArray。
将项目角色名称设置为
roleNames。- setRowCount(rows)¶
- Parameters:
行数 – int
将此模型中的行数设置为
rows。如果这个值小于rowCount(),则不需要的行中的数据将被丢弃。另请参阅
rowCount()setColumnCount()- setSortRole(role)¶
- Parameters:
角色 – int
另请参阅
属性
sortRoleᅟ的设置器。- setVerticalHeaderItem(row, item)¶
- Parameters:
row – int
项目 –
QStandardItem
将
row的垂直标题项设置为item。模型将拥有该项目的所有权。如果需要,行数会增加以适应该项目。先前的标题项(如果有的话)将被删除。- setVerticalHeaderLabels(labels)¶
- Parameters:
labels – 字符串列表
使用
labels设置垂直标题标签。如有必要,行数将增加到labels的大小。- sortRole()¶
- Return type:
整数
另请参阅
属性
sortRoleᅟ的获取器。- takeColumn(column)¶
- Parameters:
列 – int
- Return type:
移除给定的
column而不删除列中的项目,并返回指向被移除项目的指针列表。模型释放对项目的所有权。对于列中未设置的项目,列表中的相应指针将为None。另请参阅
- takeHorizontalHeaderItem(column)¶
- Parameters:
列 – int
- Return type:
从标题中移除位于
column处的水平标题项而不删除它,并返回指向该项的指针。模型释放该项的所有权。- takeItem(row[, column=0])¶
- Parameters:
row – int
column – 整数
- Return type:
移除位于(
row,column)的项目而不删除它。模型释放对该项目的所有权。另请参阅
- takeRow(row)¶
- Parameters:
行 – 整数
- Return type:
移除给定的
row而不删除行项目,并返回指向被移除项目的指针列表。模型释放对项目的所有权。对于行中未设置的项目,列表中的相应指针将为None。另请参阅
- takeVerticalHeaderItem(row)¶
- Parameters:
行 – 整数
- Return type:
从标题中移除位于
row的垂直标题项而不删除它,并返回指向该项的指针。模型释放该项的所有权。- verticalHeaderItem(row)¶
- Parameters:
行 – 整数
- Return type:
返回行
row的垂直标题项(如果已设置);否则返回None。