PySide6.QtCore.QIdentityProxyModel

class QIdentityProxyModel

QIdentityProxyModel 类未修改地代理其源模型。更多

PySide6.QtCore.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()
__init__([parent=None])
Parameters:

父对象QObject

使用给定的parent构建一个身份模型。

handleSourceDataChanges()
Return type:

布尔

如果此代理模型处理源模型数据更改,则返回 true,否则返回 false

handleSourceLayoutChanges()
Return type:

布尔

如果此代理模型处理源模型布局更改,则返回 true,否则返回 false

setHandleSourceDataChanges(b)
Parameters:

b – 布尔值

如果 btrue,此代理模型将处理源模型数据的变化(通过连接到 QAbstractItemModel::dataChanged 信号)。

默认情况下,此代理模型处理源模型数据更改。

QIdentityProxyModel的子类中,如果您需要特别处理源模型数据的变化,将其设置为false可能是有用的。

注意

调用此方法仅在调用setSourceModel()后才会生效。

setHandleSourceLayoutChanges(b)
Parameters:

b – 布尔值

如果 btrue,此代理模型将处理源模型的布局更改(通过连接到 QAbstractItemModel::layoutAboutToBeChangedQAbstractItemModel::layoutChanged 信号)。

默认情况下,此代理模型处理源模型布局更改。

QIdentityProxyModel的子类中,如果您需要特别处理源模型布局的变化,将此设置为false可能是有用的。

注意

调用此方法仅在调用setSourceModel()后才会生效。