PySide6.QtCore.QIdentityProxyModel¶
- class QIdentityProxyModel¶
QIdentityProxyModel
类未修改地代理其源模型。更多…概要¶
方法¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QIdentityProxyModel
可以用于完全转发源模型的结构,不进行排序、过滤或其他转换。这在概念上类似于单位矩阵,其中 A.I = A。由于它不进行排序或过滤,这个类最适合用于代理模型,这些模型转换源模型的
data()
。例如,可以创建一个代理模型来定义使用的字体、背景颜色或工具提示等。这消除了在创建模型结构的同一类中实现所有数据处理的必要性,并且也可以用于创建可重用的组件。这也提供了一种在第三方提供无法修改的源模型的情况下更改数据的方法。
class DateFormatProxyModel(QIdentityProxyModel): # ... def setDateFormatString(formatString): m_formatString = formatString QVariant data(QModelIndex index, int role) override if role != Qt.DisplayRole: return QIdentityProxyModel.data(index, role) sourceIndex = mapToSource(index) dateTime = sourceModel().data(sourceIndex, SourceClass::DateRole).toDateTime() return dateTime.toString(m_formatString) QMap<int, QVariant> itemData(QModelIndex proxyIndex) override QVariant> map = QIdentityProxyModel.itemData(proxyIndex) map[Qt.DisplayRole] = data(proxyIndex) return map # private m_formatString = QString()
使用给定的
parent
构建一个身份模型。- handleSourceDataChanges()¶
- Return type:
布尔
如果此代理模型处理源模型数据更改,则返回
true
,否则返回false
。- handleSourceLayoutChanges()¶
- Return type:
布尔
如果此代理模型处理源模型布局更改,则返回
true
,否则返回false
。- setHandleSourceDataChanges(b)¶
- Parameters:
b – 布尔值
如果
b
是true
,此代理模型将处理源模型数据的变化(通过连接到QAbstractItemModel::dataChanged
信号)。默认情况下,此代理模型处理源模型数据更改。
在
QIdentityProxyModel
的子类中,如果您需要特别处理源模型数据的变化,将其设置为false
可能是有用的。- setHandleSourceLayoutChanges(b)¶
- Parameters:
b – 布尔值
如果
b
是true
,此代理模型将处理源模型的布局更改(通过连接到QAbstractItemModel::layoutAboutToBeChanged
和QAbstractItemModel::layoutChanged
信号)。默认情况下,此代理模型处理源模型布局更改。
在
QIdentityProxyModel
的子类中,如果您需要特别处理源模型布局的变化,将此设置为false
可能是有用的。