PySide6.QtGraphs.QItemModelBarDataProxy

class QItemModelBarDataProxy

用于在项目模型中展示数据的代理类,使用Q3DBarsWidgetItem更多

PySide6.QtGraphs.QItemModelBarDataProxy 的继承图

概要

属性

方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

QItemModelBarDataProxy 允许你使用 QAbstractItemModel 派生模型作为 Q3DBarsWidgetItem 的数据源。它使用定义的映射将模型中的数据映射到 Q3DBarsWidgetItem 图表的行、列和值。

每当映射或模型发生变化时,数据都会异步解析。当数据解析完成时,会发出arrayReset()。然而,当useModelCategories属性设置为true时,单个项目的更改会同步解析,除非同一帧中还包含导致整个模型解析的更改。

映射可以用于以下方式:

  • 如果 useModelCategories 属性设置为 true,此代理将直接将 QAbstractItemModel 的行和列映射到 Q3DBarsWidgetItem 的行和列,并默认使用 Qt::DisplayRole 返回的值作为条形值。如果 Qt::DisplayRole 不合适,可以重新定义要使用的值角色。

  • 对于没有数据已经整齐地排序成行和列的模型,例如基于QAbstractListModel的模型,您可以从模型中定义一个角色来映射每一行、列和值。

  • 如果您不想包含模型中包含的所有数据,或者自动生成的行和列没有按照您的意愿排序,您可以通过为行和列中的任意一个或两者定义明确的类别列表来指定应包含哪些行和列以及它们的顺序。

例如,假设您有一个自定义的QAbstractItemModel用于存储与业务相关的各种月度值。模型中的每个项目都有“year”、“month”、“income”和“expenses”这些角色。您可以执行以下操作以在条形图中显示数据:

# By defining row and column categories, you tell the mapping which row and column each item
# belongs to. The categories must match the data stored in the model in the roles you define
# for row and column mapping. In this example we expect "year" role to return four digit year
# and "month" to return three letter designation for the month.
#
# An example of an item in model would be:
# Requested role -> Returned data
# "year" -> "2016" // Matches the first row category, so this item is added to the first row.
# "month" -> "jan" // Matches the first column category, so this item is added as first item in the row.
# "income" -> "12.1"
# "expenses" -> "9.2"
years = QStringList()
months = QStringList()
years << "2016" << "2017" << "2018" << "2019" << "2020" << "2021" << "2022"
months << "jan" << "feb" << "mar" << "apr" << "may" << "jun" << "jul" << "aug" << "sep" << "oct" << "nov" << "dec"
proxy = QItemModelBarDataProxy(customModel,()
                                                           "year", // Row role
                                                           "month", // Column role
                                                           "income", // Value role
                                                           years, // Row categories
                                                           months) # Column categories
#...
# To display different data later, you can simply change the mapping.
proxy.setValueRole("expenses")

如果模型的字段不包含您所需的确切格式的数据,您可以为每个角色指定一个搜索模式正则表达式和一个替换规则,以获取所需格式的值。有关如何使用正则表达式进行替换的更多信息,请参阅QString::replace(const QRegularExpression ℞, const QString &after)函数文档。请注意,使用正则表达式会影响性能,因此在不需要进行搜索和替换即可获得所需值的情况下,使用项模型更为高效。

例如,关于将搜索模式与角色结合使用的示例,请参见 简单条形图

另请参阅

使用3D处理Qt图形数据

class MultiMatchBehavior

multiMatchBehavior 属性的行为类型。

常量

描述

QItemModelBarDataProxy.MultiMatchBehavior.First

该值取自与每个行/列组合匹配的项目模型中的第一个项目。

QItemModelBarDataProxy.MultiMatchBehavior.Last

该值取自与每个行/列组合匹配的项目模型中的最后一项。

QItemModelBarDataProxy.MultiMatchBehavior.Average

匹配每个行/列组合的所有项目的值将被平均,平均值将用作条形图的值。

QItemModelBarDataProxy.MultiMatchBehavior.Cumulative

匹配每个行/列组合的所有项目的值相加,总和用作条形值。

注意

当使用from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。

property autoColumnCategoriesᅟ: bool

此属性保存是否自动生成列类别。

当设置为true时,映射会忽略任何显式设置的列类别,并在解析模型数据时用自动生成的类别覆盖它们。默认为true

Access functions:
property autoRowCategoriesᅟ: bool

此属性保存是否自动生成行类别。

当设置为true时,映射会忽略任何显式设置的行类别,并在解析模型数据时用自动生成的类别覆盖它们。默认为true

Access functions:
property columnCategoriesᅟ: list of strings

此属性保存映射的列类别。

Access functions:
property columnRoleᅟ: str

此属性保存映射的列角色。

Access functions:
property columnRolePatternᅟ: QRegularExpression

此属性保存是否在将列角色映射的值用作列类别之前对其进行搜索和替换。

此属性指定用于查找要替换的映射值部分的正则表达式,而columnRoleReplace属性包含替换字符串。这在例如从项目模型中的单个时间戳字段解析行和列类别时非常有用。

Access functions:
property columnRoleReplaceᅟ: str

此属性保存与columnRolePattern一起使用的替换内容。

默认为空字符串。有关如何使用正则表达式进行搜索和替换的更多信息,请参阅 QString::replace(const QRegularExpression ℞, const QString &after) 函数文档。

Access functions:
property itemModelᅟ: QAbstractItemModel

此属性保存项目模型。

Access functions:
property multiMatchBehaviorᅟ: QItemModelBarDataProxy.MultiMatchBehavior

此属性决定了如何处理每行/列组合的多个匹配项。

默认为 Last。所选行为会影响条形值和旋转。

例如,您可能有一个包含不规则间隔时间戳数据的项目模型,并且您希望使用条形图可视化每天数据项的总价值。这可以通过指定行和列类别来实现,以便每个条形代表一天,并将multiMatchBehavior设置为Cumulative

Access functions:
property rotationRoleᅟ: str

此属性保存映射的旋转角色。

Access functions:
property rotationRolePatternᅟ: QRegularExpression

此属性保存是否在将旋转角色映射的值用作条形旋转角度之前对其进行搜索和替换。

此属性指定用于查找要替换的映射值部分的正则表达式,而rotationRoleReplace属性包含替换字符串。

Access functions:
property rotationRoleReplaceᅟ: str

此属性保存与rotationRolePattern一起使用的替换内容。

默认为空字符串。有关如何使用正则表达式进行搜索和替换的更多信息,请参阅 QString::replace(const QRegularExpression ℞, const QString &after) 函数文档。

Access functions:
property rowCategoriesᅟ: list of strings

此属性保存映射的行类别。

Access functions:
property rowRoleᅟ: str

此属性保存映射的行角色。

Access functions:
property rowRolePatternᅟ: QRegularExpression

此属性保存是否在将行角色映射的值用作行类别之前对其执行搜索和替换。

此属性指定用于查找要替换的映射值部分的正则表达式,而rowRoleReplace属性包含替换字符串。这在例如从项目模型中的单个时间戳字段解析行和列类别时非常有用。

另请参阅

rowRole rowRoleReplace

Access functions:
property rowRoleReplaceᅟ: str

此属性保存与rowRolePattern一起使用的替换内容。

默认为空字符串。有关如何使用正则表达式进行搜索和替换的更多信息,请参阅 QString::replace(const QRegularExpression ℞, const QString &after) 函数文档。

另请参阅

rowRole rowRolePattern

Access functions:
property useModelCategoriesᅟ: bool

此属性保存是否使用行和列角色及类别进行映射。

当设置为true时,映射将忽略行和列的角色和类别,并使用模型中的行和列。默认为false

Access functions:
property valueRoleᅟ: str

此属性保存映射的值角色。

Access functions:
property valueRolePatternᅟ: QRegularExpression

此属性保存是否在将值角色映射的值用作条形值之前对其进行搜索和替换。

此属性指定用于查找要替换的映射值部分的正则表达式,而valueRoleReplace属性包含替换字符串。

Access functions:
property valueRoleReplaceᅟ: str

此属性保存与valueRolePattern一起使用的替换内容。

默认为空字符串。有关如何使用正则表达式进行搜索和替换的更多信息,请参阅 QString::replace(const QRegularExpression ℞, const QString &after) 函数文档。

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

使用可选的parent构造QItemModelBarDataProxy

__init__(itemModel[, parent=None])
Parameters:

使用 itemModel 和一个可选的 parent 构造 QItemModelBarDataProxy。代理不会获取 itemModel 的所有权,因为通常项目模型由其他控件拥有。

__init__(itemModel, valueRole[, parent=None])
Parameters:

使用itemModel和一个可选的parent构造QItemModelBarDataProxy。代理不拥有itemModel的所有权,因为通常项目模型由其他控件拥有。值角色设置为valueRole。此构造函数旨在用于数据已经按行和列正确排序的模型,因此它还将useModelCategories属性设置为true。

__init__(itemModel, rowRole, columnRole, valueRole[, parent=None])
Parameters:

使用itemModel和一个可选的parent构造QItemModelBarDataProxy。代理不会获取itemModel的所有权,因为通常项目模型由其他控件拥有。角色映射通过rowRolecolumnRolevalueRole设置。

__init__(itemModel, rowRole, columnRole, valueRole, rotationRole[, parent=None])
Parameters:
  • itemModelQAbstractItemModel

  • rowRole – str

  • columnRole – str

  • valueRole – str

  • rotationRole – str

  • parentQObject

使用 itemModel 和一个可选的 parent 构造 QItemModelBarDataProxy。代理不会获取 itemModel 的所有权,因为通常项目模型由其他控件拥有。角色映射通过 rowRolecolumnRolevalueRolerotationRole 设置。

__init__(itemModel, rowRole, columnRole, valueRole, rowCategories, columnCategories[, parent=None])
Parameters:
  • itemModelQAbstractItemModel

  • rowRole – str

  • columnRole – str

  • valueRole – str

  • rowCategories – 字符串列表

  • columnCategories – 字符串列表

  • parentQObject

使用itemModel和一个可选的parent构造QItemModelBarDataProxy。代理不拥有itemModel的所有权,因为通常项目模型由其他控件拥有。角色映射通过rowRolecolumnRolevalueRole设置。行和列类别通过rowCategoriescolumnCategories设置。此构造函数还将autoRowCategoriesautoColumnCategories设置为false。

__init__(itemModel, rowRole, columnRole, valueRole, rotationRole, rowCategories, columnCategories[, parent=None])
Parameters:
  • itemModelQAbstractItemModel

  • rowRole – str

  • columnRole – str

  • valueRole – str

  • rotationRole – str

  • rowCategories – 字符串列表

  • columnCategories – 字符串列表

  • parentQObject

使用itemModel和一个可选的parent构造QItemModelBarDataProxy。代理不会获取itemModel的所有权,因为通常项目模型由其他控件拥有。角色映射通过rowRolecolumnRolevalueRolerotationRole设置。行和列类别通过rowCategoriescolumnCategories设置。此构造函数还将autoRowCategoriesautoColumnCategories设置为false。

autoColumnCategories()
Return type:

布尔

属性 autoColumnCategoriesᅟ 的获取器。

autoColumnCategoriesChanged(enable)
Parameters:

enable – 布尔值

属性 autoColumnCategoriesᅟ 的通知信号。

autoRowCategories()
Return type:

布尔

另请参阅

setAutoRowCategories()

属性 autoRowCategoriesᅟ 的获取器。

autoRowCategoriesChanged(enable)
Parameters:

enable – 布尔值

属性 autoRowCategoriesᅟ 的通知信号。

columnCategories()
Return type:

字符串列表

另请参阅

setColumnCategories()

属性 columnCategoriesᅟ 的获取器。

columnCategoriesChanged()

属性 columnCategoriesᅟ 的通知信号。

columnCategoryIndex(category)
Parameters:

类别 – str

Return type:

整数

返回指定category在列类别列表中的索引。如果未找到该类别,则返回-1。

注意

如果使用自动列类别生成,在模型中的数据首次解析之前,此方法将不会返回有效的索引。

columnRole()
Return type:

字符串

另请参阅

setColumnRole()

属性 columnRoleᅟ 的获取器。

columnRoleChanged(role)
Parameters:

role – str

属性 columnRoleᅟ 的通知信号。

columnRolePattern()
Return type:

QRegularExpression

另请参阅

setColumnRolePattern()

属性 columnRolePatternᅟ 的获取器。

columnRolePatternChanged(pattern)
Parameters:

patternQRegularExpression

属性 columnRolePatternᅟ 的通知信号。

columnRoleReplace()
Return type:

字符串

另请参阅

setColumnRoleReplace()

属性 columnRoleReplaceᅟ 的获取器。

columnRoleReplaceChanged(replace)
Parameters:

replace – 字符串

属性 columnRoleReplaceᅟ 的通知信号。

itemModel()
Return type:

QAbstractItemModel

另请参阅

setItemModel()

属性 itemModelᅟ 的获取器。

itemModelChanged(itemModel)
Parameters:

itemModelQAbstractItemModel

属性 itemModelᅟ 的通知信号。

multiMatchBehavior()
Return type:

MultiMatchBehavior

属性 multiMatchBehaviorᅟ 的获取器。

multiMatchBehaviorChanged(behavior)
Parameters:

行为MultiMatchBehavior

属性 multiMatchBehaviorᅟ 的通知信号。

remap(rowRole, columnRole, valueRole, rotationRole, rowCategories, columnCategories)
Parameters:
  • rowRole – str

  • columnRole – str

  • valueRole – str

  • rotationRole – str

  • rowCategories – 字符串列表

  • columnCategories – 字符串列表

rowRolecolumnRolevalueRolerotationRolerowCategoriescolumnCategories更改为映射。

rotationRole()
Return type:

字符串

另请参阅

setRotationRole()

属性 rotationRoleᅟ 的获取器。

rotationRoleChanged(role)
Parameters:

role – str

属性 rotationRoleᅟ 的通知信号。

rotationRolePattern()
Return type:

QRegularExpression

属性 rotationRolePatternᅟ 的获取器。

rotationRolePatternChanged(pattern)
Parameters:

patternQRegularExpression

属性 rotationRolePatternᅟ 的通知信号。

rotationRoleReplace()
Return type:

字符串

属性 rotationRoleReplaceᅟ 的获取器。

rotationRoleReplaceChanged(replace)
Parameters:

replace – 字符串

属性 rotationRoleReplaceᅟ 的通知信号。

rowCategories()
Return type:

字符串列表

另请参阅

setRowCategories()

属性 rowCategoriesᅟ 的获取器。

rowCategoriesChanged()

属性 rowCategoriesᅟ 的通知信号。

rowCategoryIndex(category)
Parameters:

类别 – str

Return type:

整数

返回指定category在行类别列表中的索引。如果行类别列表为空,则返回-1。

注意

如果正在使用自动行类别生成,在模型中的数据首次解析之前,此方法将不会返回有效的索引。

rowRole()
Return type:

字符串

另请参阅

setRowRole()

属性 rowRoleᅟ 的获取器。

rowRoleChanged(role)
Parameters:

role – str

属性 rowRoleᅟ 的通知信号。

rowRolePattern()
Return type:

QRegularExpression

另请参阅

setRowRolePattern()

属性 rowRolePatternᅟ 的获取器。

rowRolePatternChanged(pattern)
Parameters:

patternQRegularExpression

属性 rowRolePatternᅟ 的通知信号。

rowRoleReplace()
Return type:

字符串

另请参阅

setRowRoleReplace()

属性 rowRoleReplaceᅟ 的获取器。

rowRoleReplaceChanged(replace)
Parameters:

replace – 字符串

属性 rowRoleReplaceᅟ 的通知信号。

setAutoColumnCategories(enable)
Parameters:

enable – 布尔值

另请参阅

autoColumnCategories()

属性 autoColumnCategoriesᅟ 的设置器。

setAutoRowCategories(enable)
Parameters:

enable – 布尔值

另请参阅

autoRowCategories()

属性 autoRowCategoriesᅟ 的设置器。

setColumnCategories(categories)
Parameters:

categories – 字符串列表

另请参阅

columnCategories()

属性 columnCategoriesᅟ 的设置器。

setColumnRole(role)
Parameters:

role – str

另请参阅

columnRole()

属性 columnRoleᅟ 的设置器。

setColumnRolePattern(pattern)
Parameters:

patternQRegularExpression

另请参阅

columnRolePattern()

属性 columnRolePatternᅟ 的设置器。

setColumnRoleReplace(replace)
Parameters:

replace – 字符串

另请参阅

columnRoleReplace()

属性 columnRoleReplaceᅟ 的设置器。

setItemModel(itemModel)
Parameters:

itemModelQAbstractItemModel

将项目模型设置为itemModel。不拥有模型的所有权,但会连接到模型以监听变化。

另请参阅

itemModel()

属性 itemModelᅟ 的设置器。

setMultiMatchBehavior(behavior)
Parameters:

行为MultiMatchBehavior

另请参阅

multiMatchBehavior()

属性 multiMatchBehaviorᅟ 的设置器。

setRotationRole(role)
Parameters:

role – str

另请参阅

rotationRole()

属性 rotationRoleᅟ 的设置器。

setRotationRolePattern(pattern)
Parameters:

patternQRegularExpression

另请参阅

rotationRolePattern()

属性 rotationRolePatternᅟ 的设置器。

setRotationRoleReplace(replace)
Parameters:

replace – 字符串

另请参阅

rotationRoleReplace()

属性 rotationRoleReplaceᅟ 的设置器。

setRowCategories(categories)
Parameters:

categories – 字符串列表

另请参阅

rowCategories()

属性 rowCategoriesᅟ 的设置器。

setRowRole(role)
Parameters:

role – str

另请参阅

rowRole()

属性 rowRoleᅟ 的设置器。

setRowRolePattern(pattern)
Parameters:

patternQRegularExpression

另请参阅

rowRolePattern()

属性 rowRolePatternᅟ 的设置器。

setRowRoleReplace(replace)
Parameters:

replace – 字符串

另请参阅

rowRoleReplace()

属性 rowRoleReplaceᅟ 的设置器。

setUseModelCategories(enable)
Parameters:

enable – 布尔值

另请参阅

useModelCategories()

属性 useModelCategoriesᅟ 的设置器。

setValueRole(role)
Parameters:

role – str

另请参阅

valueRole()

属性 valueRoleᅟ 的设置器。

setValueRolePattern(pattern)
Parameters:

patternQRegularExpression

另请参阅

valueRolePattern()

属性 valueRolePatternᅟ 的设置器。

setValueRoleReplace(replace)
Parameters:

replace – 字符串

另请参阅

valueRoleReplace()

属性 valueRoleReplaceᅟ 的设置器。

useModelCategories()
Return type:

布尔

属性 useModelCategoriesᅟ 的获取器。

useModelCategoriesChanged(enable)
Parameters:

enable – 布尔值

属性 useModelCategoriesᅟ 的通知信号。

valueRole()
Return type:

字符串

另请参阅

setValueRole()

属性 valueRoleᅟ 的获取器。

valueRoleChanged(role)
Parameters:

role – str

属性 valueRoleᅟ 的通知信号。

valueRolePattern()
Return type:

QRegularExpression

另请参阅

setValueRolePattern()

属性 valueRolePatternᅟ 的获取器。

valueRolePatternChanged(pattern)
Parameters:

patternQRegularExpression

属性 valueRolePatternᅟ 的通知信号。

valueRoleReplace()
Return type:

字符串

另请参阅

setValueRoleReplace()

属性 valueRoleReplaceᅟ 的获取器。

valueRoleReplaceChanged(replace)
Parameters:

replace – 字符串

属性 valueRoleReplaceᅟ 的通知信号。