QItemModelSurfaceDataProxy 类

用于在具有 Q3DSurface 的项模型中呈现数据的代理类。 更多...

头文件 #include <QItemModelSurfaceDataProxy>
CMakefind_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmakeQT += graphs
由以下实例化 ItemModelSurfaceDataProxy
继承自 QSurfaceDataProxy
状态技术预览

公共类型

枚举类MultiMatchBehavior { First, Last, Average, CumulativeY }

属性

公共函数

QItemModelSurfaceDataProxy(QObject *parent = nullptr)
QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr)
QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, const QString &yPosRole, QObject *parent = nullptr)
QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &yPosRole, QObject *parent = nullptr)
QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, QObject *parent = nullptr)
QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &yPosRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr)
QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr)
virtual~QItemModelSurfaceDataProxy() override
boolautoColumnCategories() const
boolautoRowCategories() const
QStringListcolumnCategories() const
intcolumnCategoryIndex(const QString &category)
QStringcolumnRole() const
QRegularExpressioncolumnRolePattern() const
QStringcolumnRoleReplace() const
QAbstractItemModel *itemModel() const
QItemModelSurfaceDataProxy::MultiMatchBehaviormultiMatchBehavior() const
voidremap(const QString &rowRole, const QString &columnRole, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QStringList &rowCategories, const QStringList &columnCategories)
QStringListrowCategories() const
introwCategoryIndex(const QString &category)
QStringrowRole() const
QRegularExpressionrowRolePattern() const
QStringrowRoleReplace() const
voidsetAutoColumnCategories(bool enable)
voidsetAutoRowCategories(bool enable)
voidsetColumnCategories(const QStringList &categories)
voidsetColumnRole(const QString &role)
voidsetColumnRolePattern(const QRegularExpression &pattern)
voidsetColumnRoleReplace(const QString &replace)
voidsetItemModel(QAbstractItemModel *itemModel)
voidsetMultiMatchBehavior(QItemModelSurfaceDataProxy::MultiMatchBehavior behavior)
voidsetRowCategories(const QStringList &categories)
voidsetRowRole(const QString &role)
voidsetRowRolePattern(const QRegularExpression &pattern)
voidsetRowRoleReplace(const QString &replace)
voidsetUseModelCategories(bool enable)
voidsetXPosRole(const QString &role)
voidsetXPosRolePattern(const QRegularExpression &pattern)
voidsetXPosRoleReplace(const QString &replace)
voidsetYPosRole(const QString &role)
voidsetYPosRolePattern(const QRegularExpression &pattern)
voidsetYPosRoleReplace(const QString &replace)
voidsetZPosRole(const QString &role)
voidsetZPosRolePattern(const QRegularExpression &pattern)
voidsetZPosRoleReplace(const QString &replace)
booluseModelCategories() const
QStringxPosRole() const
QRegularExpressionxPosRolePattern() const
QStringxPosRoleReplace() const
QStringyPosRole() const
QRegularExpressionyPosRolePattern() const
QStringyPosRoleReplace() const
QStringzPosRole() const
QRegularExpressionzPosRolePattern() const
QStringzPosRoleReplace() const

信号

voidautoColumnCategoriesChanged(bool enable)
voidautoRowCategoriesChanged(bool enable)
voidcolumnCategoriesChanged()
voidcolumnRoleChanged(const QString &role)
voidcolumnRolePatternChanged(const QRegularExpression &pattern)
voidcolumnRoleReplaceChanged(const QString &replace)
voiditemModelChanged(const QAbstractItemModel *itemModel)
voidmultiMatchBehaviorChanged(QItemModelSurfaceDataProxy::MultiMatchBehavior behavior)
voidrowCategoriesChanged()
voidrowRoleChanged(const QString &role)
voidrowRolePatternChanged(const QRegularExpression &pattern)
voidrowRoleReplaceChanged(const QString &replace)
voiduseModelCategoriesChanged(bool enable)
voidxPosRoleChanged(const QString &role)
voidxPosRolePatternChanged(const QRegularExpression &pattern)
voidxPosRoleReplaceChanged(const QString &replace)
voidyPosRoleChanged(const QString &role)
voidyPosRolePatternChanged(const QRegularExpression &pattern)
voidyPosRoleReplaceChanged(const QString &replace)
voidzPosRoleChanged(const QString &role)
voidzPosRolePatternChanged(const QRegularExpression &pattern)
voidzPosRoleReplaceChanged(const QString &replace)

详细描述

QItemModelSurfaceDataProxy 允许您将 QAbstractItemModel 派生模型用作 Q3DSurface 的数据源。它使用已定义的映射将模型中的数据映射到 Q3DSurface 图的行、列和表面点。

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

映射可以使用以下方式使用

  • 如果 useModelCategories 属性设置为 true,则此代理将 QAbstractItemModel 的行和列映射到 Q3DSurface 的行和列,并默认使用 Qt::DisplayRole 返回的值作为 Y 位置。如果可以转换为浮点数,则默认使用行和列标题作为 Z 位置和 X 位置。如果不可用,则使用行和列索引。如果 Qt::DisplayRole 不适用,可以重新定义要使用的 Y 位置角色。如果标题或索引不适用,可以重新定义要使用的 Z 位置和 X 位置角色。
  • 对于未将数据整齐地排序到行和列中的模型,例如基于 QAbstractListModel 的模型,您可以为每个行、列和 Y 位置定义来自模型的角色进行映射。
  • 如果您不想包含模型中包含的所有数据,或者自动生成的行和列的顺序不符合您的要求,可以通过定义行和列的显式类别列表来指定应包含哪些行和列以及它们的顺序。

例如,假设您有一个存储表面地形数据的自定义 QAbstractItemModel。模型中的每个项目都具有“经度”、“纬度”和“高度”角色。项目模型已经将数据适当地排序,以便经度和纬度是首先遇到的正确顺序,这使得我们能够利用行和列类别自动生成。您可以通过以下方式在表面图中显示数据:

QItemModelSurfaceDataProxy *proxy = new QItemModelSurfaceDataProxy(customModel,
                                                                   QStringLiteral("longitude"), // Row role
                                                                   QStringLiteral("latitude"), // Column role
                                                                   QStringLiteral("height")); // Y-position role

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

例如,关于与角色结合使用搜索模式的用法,请参阅 ItemModelBarDataProxy简单的柱状图 中的使用。

另请参阅Qt Graphs 数据处理与 3D

成员类型文档

enum class QItemModelSurfaceDataProxy::MultiMatchBehavior

QItemModelSurfaceDataProxy::multiMatchBehavior 属性的行为类型。

常量描述
QItemModelSurfaceDataProxy::MultiMatchBehavior::First0从与每个行/列组合匹配的项模型中的第一个项目获取位置值。
QItemModelSurfaceDataProxy::MultiMatchBehavior::Last1位置值取自匹配每行/列组合项模型中的最后一个项。
QItemModelSurfaceDataProxy::MultiMatchBehavior::Average2将所有匹配每个行/列组合的项的位置值取平均值,并将平均值用作表面点位置。
QItemModelSurfaceDataProxy::MultiMatchBehavior::CumulativeY3对于X和Z值,这与 Average 的行为相同,但Y值是求和而不是取平均值,总和用作表面点Y位置。

属性文档

autoColumnCategories : bool

该属性表示是否自动生成列类别。

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

访问函数

boolautoColumnCategories() const
voidsetAutoColumnCategories(bool enable)

通知信号

voidautoColumnCategoriesChanged(bool enable)

autoRowCategories : bool

该属性表示是否自动生成行类别。

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

访问函数

boolautoRowCategories() const
voidsetAutoRowCategories(bool enable)

通知信号

voidautoRowCategoriesChanged(bool enable)

columnCategories : QStringList

该属性表示映射的列类别。

访问函数

QStringListcolumnCategories() const
voidsetColumnCategories(const QStringList &categories)

通知信号

voidcolumnCategoriesChanged()

columnRole : QString

该属性表示映射到列类别的项模型角色。

除了定义数据属于哪个列外,由列角色指示的值在解决模型数据时还要设置为 QSurfaceDataItem 的 X 坐标值,除非还定义了单独的 X 位置角色。

访问函数

QStringcolumnRole() const
voidsetColumnRole(const QString &role)

通知信号

voidcolumnRoleChanged(const QString &role)

columnRolePattern : QRegularExpression

该属性表示在使用列角色作为列类别之前是否在列角色的值上执行搜索和替换。

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

访问函数

QRegularExpressioncolumnRolePattern() const
voidsetColumnRolePattern(const QRegularExpression &pattern)

通知信号

voidcolumnRolePatternChanged(const QRegularExpression &pattern)

另请参阅columnRolecolumnRoleReplace

columnRoleReplace : QString

该属性表示与列角色模式一起使用的替换内容。

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

访问函数

QStringcolumnRoleReplace() const
voidsetColumnRoleReplace(const QString &replace)

通知信号

voidcolumnRoleReplaceChanged(const QString &replace)

另请参阅columnRolecolumnRolePattern

itemModel : QAbstractItemModel*

此属性包含用于3D表面的数据源项模型。

访问函数

QAbstractItemModel *itemModel() const
voidsetItemModel(QAbstractItemModel *itemModel)

通知信号

voiditemModelChanged(const QAbstractItemModel *itemModel)

multiMatchBehavior : QItemModelSurfaceDataProxy::MultiMatchBehavior

处理每个行/列组合的多个匹配的方式。

默认为最后一个。

例如,您可能有一个间隔不规律的时间戳数据项模型,并且想用表面图可视化每个小时的平均数据项位置。这可以通过指定行和列类别来完成,使得每个表面点代表一个小时,并将此属性设置为平均。

访问函数

QItemModelSurfaceDataProxy::MultiMatchBehaviormultiMatchBehavior() const
voidsetMultiMatchBehavior(QItemModelSurfaceDataProxy::MultiMatchBehavior behavior)

通知信号

voidmultiMatchBehaviorChanged(QItemModelSurfaceDataProxy::MultiMatchBehavior behavior)

rowCategories : QStringList

此属性包含映射的行类别。

访问函数

QStringListrowCategories() const
voidsetRowCategories(const QStringList &categories)

通知信号

voidrowCategoriesChanged()

rowRole : QString

此属性包含映射到行类别的项模型角色。

除了定义数据属于哪一行之外,行角色指示的值在解析模型数据时也设置为 QSurfaceDataItem 的 z 坐标值,除非还定义了单独的 z 位置角色。

访问函数

QStringrowRole() const
voidsetRowRole(const QString &role)

通知信号

voidrowRoleChanged(const QString &role)

rowRolePattern : QRegularExpression

此属性包含在使用之前是否在行角色映射的值上执行搜索和替换。

此属性指定要找到并替换的映射值的正则表达式,而 rowRoleReplace 属性包含替换字符串。

访问函数

QRegularExpressionrowRolePattern() const
voidsetRowRolePattern(const QRegularExpression &pattern)

通知信号

voidrowRolePatternChanged(const QRegularExpression &pattern)

另请参阅rowRolerowRoleReplace

rowRoleReplace : QString

此属性保存用于与行角色模式结合的替换内容。

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

访问函数

QStringrowRoleReplace() const
voidsetRowRoleReplace(const QString &replace)

通知信号

voidrowRoleReplaceChanged(const QString &replace)

另请参阅rowRolerowRolePattern

useModelCategories : bool

此属性表示是否使用行和列角色和类别进行映射。

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

访问函数

booluseModelCategories() const
voidsetUseModelCategories(bool enable)

通知信号

voiduseModelCategoriesChanged(bool enable)

xPosRole : QString

此属性保存用于将项模式角色映射到X位置的项。

如果此角色未定义,则使用 columnRole 来确定已解析的 QSurfaceDataItem 对象的 X 坐标值。

访问函数

QStringxPosRole() const
voidsetXPosRole(const QString &role)

通知信号

voidxPosRoleChanged(const QString &role)

xPosRolePattern : QRegularExpression

此属性表示在用作项目位置值之前是否对x位置角色映射的值执行搜索和替换。

此属性指定要查找替换部分的正则表达式,而 xPosRoleReplace 属性包含替换字符串。

访问函数

QRegularExpressionxPosRolePattern() const
voidsetXPosRolePattern(const QRegularExpression &pattern)

通知信号

voidxPosRolePatternChanged(const QRegularExpression &pattern)

另请参阅xPosRolexPosRoleReplace

xPosRoleReplace : QString

此属性保存用于与x位置角色模式结合的替换内容。

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

访问函数

QStringxPosRoleReplace() const
voidsetXPosRoleReplace(const QString &replace)

通知信号

voidxPosRoleReplaceChanged(const QString &replace)

另请参阅xPosRolexPosRolePattern

yPosRole : QString

此属性保存用于将项模式角色映射到Y位置的项。

访问函数

QStringyPosRole() const
voidsetYPosRole(const QString &role)

通知信号

voidyPosRoleChanged(const QString &role)

yPosRolePattern : QRegularExpression

该属性表示在用作项目位置值之前,是否在对y位置角色映射的值上执行搜索和替换。

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

访问函数

QRegularExpressionyPosRolePattern() const
voidsetYPosRolePattern(const QRegularExpression &pattern)

通知信号

voidyPosRolePatternChanged(const QRegularExpression &pattern)

另请参阅 yPosRoleyPosRoleReplace.

yPosRoleReplace : QString

该属性表示与y位置角色模式一起使用的替换内容。

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

访问函数

QStringyPosRoleReplace() const
voidsetYPosRoleReplace(const QString &replace)

通知信号

voidyPosRoleReplaceChanged(const QString &replace)

另请参阅 yPosRoleyPosRolePattern.

zPosRole : QString

该属性表示要将Z位置映射到的项目模型角色。

如果此角色未定义,则使用 rowRole 确定已解析的 QSurfaceDataItem 对象的Z坐标值。

访问函数

QStringzPosRole() const
voidsetZPosRole(const QString &role)

通知信号

voidzPosRoleChanged(const QString &role)

zPosRolePattern : QRegularExpression

该属性表示在用作项目位置值之前,是否在对z位置角色映射的值上执行搜索和替换。

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

访问函数

QRegularExpressionzPosRolePattern() const
voidsetZPosRolePattern(const QRegularExpression &pattern)

通知信号

voidzPosRolePatternChanged(const QRegularExpression &pattern)

另请参阅 zPosRolezPosRoleReplace.

zPosRoleReplace : QString

该属性表示与z位置角色模式一起使用的替换内容。

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

访问函数

QStringzPosRoleReplace() const
voidsetZPosRoleReplace(const QString &replace)

通知信号

voidzPosRoleReplaceChanged(const QString &replace)

另请参阅 zPosRolezPosRolePattern.

成员函数文档

[显式] QItemModelSurfaceDataProxy::QItemModelSurfaceDataProxy(QObject *parent = nullptr)

使用可选的 parent 构造 QItemModelSurfaceDataProxy。

[显式] QItemModelSurfaceDataProxy::QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr)

使用itemModel和可选的parent构造QItemModelSurfaceDataProxy。代理不拥有itemModel,因为通常项模型由其他控件拥有。

[显式] QItemModelSurfaceDataProxy::QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, const QString &yPosRole, QObject *parent = nullptr)

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

[显式] QItemModelSurfaceDataProxy::QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &yPosRole, QObject *parent = nullptr)

使用itemModel和可选的parent构造QItemModelSurfaceDataProxy。代理不拥有itemModel,因为通常项模型由其他控件拥有。使用rowRolecolumnRoleyPosRole设置角色映射。将zPosRolexPosRole分别设置为rowRolecolumnRole

[显式] QItemModelSurfaceDataProxy::QItemModelSurfaceDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, QObject *parent = nullptr)

使用itemModel和可选的parent构造QItemModelSurfaceDataProxy。代理不拥有itemModel,因为通常项模型由其他控件拥有。使用rowRolecolumnRolexPosRoleyPosRolezPosRole设置角色映射。

[明确构造] QItemModelSurfaceDataProxy::QItemModelSurfaceDataProxy(《QAbstractItemModel》) *itemModel,const 《QString》 &rowRole,const 《QString》 &columnRole,const 《QString》 &yPosRole,const 《QStringList》 &rowCategories,const 《QStringList》 &columnCategoriesQObject *parent = nullptr)

使用 itemModel 和可选的 parent 构造 QItemModelSurfaceDataProxy。代理不拥有 itemModel,因为通常项模型由其他控件拥有。使用 rowRolecolumnRoleyPosRole 设置角色映射。将 zPosRolexPosRole 分别设置为 rowRolecolumnRole。使用 rowCategoriescolumnCategories 设置行和列类别。此构造函数还将 autoRowCategoriesautoColumnCategories 设置为 false。

[明确构造] QItemModelSurfaceDataProxy::QItemModelSurfaceDataProxy(《QAbstractItemModel》) *itemModel,const 《QString》 &rowRole,const 《QString》 &columnRole,const 《QString》 &xPosRole,const 《QString》 &yPosRole,const 《QString》 &zPosRole,const 《QStringList》 &rowCategories,const 《QStringList》 &columnCategoriesQObject *parent = nullptr)

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

[重载虚函数 noexcept] QItemModelSurfaceDataProxy::~QItemModelSurfaceDataProxy()

销毁 QItemModelSurfaceDataProxy

[可调用]QString》 int QItemModelSurfaceDataProxy::columnCategoryIndex(const 《QString》 &category)

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

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

注意: 此函数可以通过元对象系统和从 QML 调用。请参阅 Q_INVOKABLE

void QItemModelSurfaceDataProxy::remap(const QString &rowRole, const QString &columnRole, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QStringList &rowCategories, const QStringList &columnCategories)

rowRolecolumnRolexPosRoleyPosRolezPosRolerowCategoriescolumnCategories 映射到映射中。

[可用] int QItemModelSurfaceDataProxy::rowCategoryIndex(const QString &category)

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

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

注意: 此函数可以通过元对象系统和从 QML 调用。请参阅 Q_INVOKABLE

void QItemModelSurfaceDataProxy::setItemModel(QAbstractItemModel *itemModel)

将项目模型设置为 itemModel。不获取模型的所有权,但连接到它以监听更改。

注意:属性 itemModel 的设置器函数。

另请参阅:itemModel

© 2024 The Qt Company Ltd. 本文档中的文档贡献权归其 respective owners。本提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 和相应的标识是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标均为其 respective owners 的财产。