QItemModelScatterDataProxy Class
用于在项目模型中通过Q3DScatterWidgetItem 呈现数据的代理类。更多内容...
| 头文件: | #include <QItemModelScatterDataProxy> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Graphs) target_link_libraries(mytarget PRIVATE Qt6::Graphs) |
| qmake: | QT += graphs |
| 在 QML 中: | ItemModelScatterDataProxy |
| 继承自: | QScatterDataProxy |
- 所有成员列表(包括继承的成员)
- QItemModelScatterDataProxy 属于Qt Graphs 的3D C++ 类。
属性
|
|
公共函数
| QItemModelScatterDataProxy(QObject *parent = nullptr) | |
| QItemModelScatterDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr) | |
| QItemModelScatterDataProxy(QAbstractItemModel *itemModel, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, QObject *parent = nullptr) | |
| QItemModelScatterDataProxy(QAbstractItemModel *itemModel, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QString &rotationRole, QObject *parent = nullptr) | |
| virtual | ~QItemModelScatterDataProxy() override |
| QAbstractItemModel * | itemModel() const |
| void | remap(const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QString &rotationRole) |
| void | remap(const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QString &rotationRole, const QString &scaleRole) |
| QString | rotationRole() const |
| QRegularExpression | rotationRolePattern() const |
| QString | rotationRoleReplace() const |
| QString | scaleRole() const |
| QRegularExpression | scaleRolePattern() const |
| QString | scaleRoleReplace() const |
| void | setItemModel(QAbstractItemModel *itemModel) |
| void | setRotationRole(const QString &role) |
| void | setRotationRolePattern(const QRegularExpression &pattern) |
| void | setRotationRoleReplace(const QString &replace) |
| void | setScaleRole(const QString &role) |
| void | setScaleRolePattern(const QRegularExpression &pattern) |
| void | setScaleRoleReplace(const QString &replace) |
| void | setXPosRole(const QString &role) |
| void | setXPosRolePattern(const QRegularExpression &pattern) |
| void | setXPosRoleReplace(const QString &replace) |
| void | setYPosRole(const QString &role) |
| void | setYPosRolePattern(const QRegularExpression &pattern) |
| void | setYPosRoleReplace(const QString &replace) |
| void | setZPosRole(const QString &role) |
| void | setZPosRolePattern(const QRegularExpression &pattern) |
| void | setZPosRoleReplace(const QString &replace) |
| QString | xPosRole() const |
| QRegularExpression | xPosRolePattern() const |
| QString | xPosRoleReplace() const |
| QString | yPosRole() const |
| QRegularExpression | yPosRolePattern() const |
| QString | yPosRoleReplace() const |
| QString | zPosRole() const |
| QRegularExpression | zPosRolePattern() const |
| QString | zPosRoleReplace() const |
信号
| void | itemModelChanged(const QAbstractItemModel *itemModel) |
| void | rotationRoleChanged(const QString &role) |
| void | rotationRolePatternChanged(const QRegularExpression &pattern) |
| void | rotationRoleReplaceChanged(const QString &replace) |
| void | scaleRoleChanged(const QString &role) |
| void | scaleRolePatternChanged(const QRegularExpression &pattern) |
| void | scaleRoleReplaceChanged(const QString &replace) |
| void | xPosRoleChanged(const QString &role) |
| void | xPosRolePatternChanged(const QRegularExpression &pattern) |
| void | xPosRoleReplaceChanged(const QString &replace) |
| void | yPosRoleChanged(const QString &role) |
| void | yPosRolePatternChanged(const QRegularExpression &pattern) |
| void | yPosRoleReplaceChanged(const QString &replace) |
| void | zPosRoleChanged(const QString &role) |
| void | zPosRolePatternChanged(const QRegularExpression &pattern) |
| void | zPosRoleReplaceChanged(const QString &replace) |
详细说明
QItemModelScatterDataProxy 允许您将继承自QAbstractItemModel 的模型用作Q3DScatterWidgetItem 的数据源。它将QAbstractItemModel 的角色映射到Q3DScatterWidgetItem 点坐标的XYZ值。
每当映射或模型发生变化时,数据都会异步解析。数据解析完成后会触发QScatterDataProxy::arrayReset()事件。但是,模型初始化后的插入、移除以及单个数据项的更改将同步解析,除非同一帧中还包含导致整个模型被解析的更改。
映射会忽略QAbstractItemModel 的行和列,并将所有项视为等同。它要求模型为数据项提供角色,这些角色可映射为散点图中散点坐标的X、Y和Z值。
例如,假设您有一个自定义的QAbstractItemModel ,用于存储对材料样本进行的各种测量数据,并为“密度”、“硬度”和“导电率”等角色提供数据。您可以使用以下代理在散点图上可视化这些属性:
// Map "density" value to X-axis, "hardness" to Y-axis and "conductivity" to Z-axis.
QItemModelScatterDataProxy *proxy = new QItemModelScatterDataProxy(customModel,
QStringLiteral("density"),
QStringLiteral("hardness"),
QStringLiteral("conductivity"));如果模型的字段中数据格式与您的需求不完全一致,您可以为每个角色指定一个搜索模式正则表达式和一个替换规则,以将值转换为您所需的格式。 有关使用正则表达式进行替换的更多信息,请参阅QString::replace(constQRegularExpression &rx, constQString &after) 函数文档。请注意,使用正则表达式会影响性能,因此,在无需通过搜索和替换即可获得所需值的情况下,使用项目模型会更高效。
关于如何将搜索模式与角色结合使用的示例,请参阅《Simple Bar Graph》中ItemModelBarDataProxy 的用法。
另请参阅 Qt Graphs 中的“3D 数据处理”。
属性文档
itemModel : QAbstractItemModel*
此属性保存将用作 3D 散点图系列数据源的项目模型。
访问函数:
| QAbstractItemModel * | itemModel() const |
| void | setItemModel(QAbstractItemModel *itemModel) |
通知信号:
| void | itemModelChanged(const QAbstractItemModel *itemModel) |
rotationRole : QString
该属性承担项目模型角色,用于映射到项目轮换。
该模型可提供旋转值,形式可以是可直接转换为QQuaternion 的变体,也可以是以下字符串表示形式之一:"scalar,x,y,z" 或"@angle,x,y,z" 。前者将直接使用给定值构建四元数,后者将通过调用QQuaternion::fromAxisAndAngle()方法构建四元数。
访问函数:
| QString | rotationRole() const |
| void | setRotationRole(const QString &role) |
通知器信号:
| void | rotationRoleChanged(const QString &role) |
rotationRolePattern : QRegularExpression
该属性用于指定在将旋转角色映射的值用作项目旋转之前,是否对其进行搜索和替换。
该属性指定用于查找映射值中待替换部分的正则表达式,而rotationRoleReplace 属性则包含替换字符串。
访问函数:
| QRegularExpression | rotationRolePattern() const |
| void | setRotationRolePattern(const QRegularExpression &pattern) |
通知信号:
| void | rotationRolePatternChanged(const QRegularExpression &pattern) |
另请参阅 rotationRole 和rotationRoleReplace 。
rotationRoleReplace : QString
该属性存储将与“旋转”角色模式配合使用的替换内容。
默认值为空字符串。有关使用正则表达式进行搜索和替换的更多信息,请参阅QString::replace(constQRegularExpression &rx, constQString &after) 函数文档。
访问函数:
| QString | rotationRoleReplace() const |
| void | setRotationRoleReplace(const QString &replace) |
通知器信号:
| void | rotationRoleReplaceChanged(const QString &replace) |
另请参阅 rotationRole 和rotationRolePattern 。
scaleRole : QString
该属性承担“项目模型”的角色,用于映射到项目比例。
该模型可提供两种形式的尺度值:"x,y,z" 。前者将直接使用给定的值构建 vector3d。
访问函数:
| QString | scaleRole() const |
| void | setScaleRole(const QString &role) |
通知器信号:
| void | scaleRoleChanged(const QString &role) |
scaleRolePattern : QRegularExpression
该属性用于指定是否在将比例尺角色映射的值用作项目比例尺之前,对其进行搜索和替换操作。
该属性指定用于查找映射值中待替换部分的正则表达式,而scaleRoleReplace 属性则包含替换字符串。
访问函数:
| QRegularExpression | scaleRolePattern() const |
| void | setScaleRolePattern(const QRegularExpression &pattern) |
通知信号:
| void | scaleRolePatternChanged(const QRegularExpression &pattern) |
另请参阅 scaleRole 和scaleRoleReplace 。
scaleRoleReplace : QString
该属性用于存储与“scale”角色模式配合使用的替换内容。
默认值为空字符串。有关使用正则表达式进行搜索和替换的工作原理的更多信息,请参阅QString::replace(constQRegularExpression &rx, constQString &after) 函数文档。
访问函数:
| QString | scaleRoleReplace() const |
| void | setScaleRoleReplace(const QString &replace) |
通知器信号:
| void | scaleRoleReplaceChanged(const QString &replace) |
另请参阅 scaleRole 和scaleRolePattern 。
xPosRole : QString
该属性承担项目模型的角色,用于映射到 X 坐标位置。
访问函数:
| QString | xPosRole() const |
| void | setXPosRole(const QString &role) |
通知器信号:
| void | xPosRoleChanged(const QString &role) |
xPosRolePattern : QRegularExpression
此属性控制是否在将 x 位置角色映射的值用作项目位置值之前,对其进行搜索和替换操作。
该属性指定用于查找映射值中待替换部分的正则表达式,而xPosRoleReplace 属性则包含替换字符串。
访问函数:
| QRegularExpression | xPosRolePattern() const |
| void | setXPosRolePattern(const QRegularExpression &pattern) |
通知信号:
| void | xPosRolePatternChanged(const QRegularExpression &pattern) |
另请参阅 xPosRole 和xPosRoleReplace 。
xPosRoleReplace : QString
该属性存储将与“x 位置”角色模式配合使用的替换内容。
默认值为空字符串。有关使用正则表达式进行搜索和替换的更多信息,请参阅QString::replace (constQRegularExpression &rx, constQString &after)函数文档。
访问函数:
| QString | xPosRoleReplace() const |
| void | setXPosRoleReplace(const QString &replace) |
通知器信号:
| void | xPosRoleReplaceChanged(const QString &replace) |
另请参阅 xPosRole 和xPosRolePattern 。
yPosRole : QString
该属性承担项目模型的角色,用于映射到 Y 位置。
访问函数:
| QString | yPosRole() const |
| void | setYPosRole(const QString &role) |
通知器信号:
| void | yPosRoleChanged(const QString &role) |
yPosRolePattern : QRegularExpression
该属性用于控制是否在将 y 位置角色映射的值用作项目位置值之前,对其进行搜索和替换操作。
该属性指定用于查找映射值中待替换部分的正则表达式,而yPosRoleReplace 属性则包含替换字符串。
访问函数:
| QRegularExpression | yPosRolePattern() const |
| void | setYPosRolePattern(const QRegularExpression &pattern) |
通知信号:
| void | yPosRolePatternChanged(const QRegularExpression &pattern) |
另请参阅 yPosRole 和yPosRoleReplace 。
yPosRoleReplace : QString
该属性存储将与 y 位置角色模式配合使用的替换内容。
默认值为空字符串。有关使用正则表达式进行搜索和替换的更多信息,请参阅QString::replace (constQRegularExpression &rx, constQString &after)函数文档。
访问函数:
| QString | yPosRoleReplace() const |
| void | setYPosRoleReplace(const QString &replace) |
通知器信号:
| void | yPosRoleReplaceChanged(const QString &replace) |
另请参阅 yPosRole 和yPosRolePattern 。
zPosRole : QString
该属性承担将项模型映射到 Z 位置的职责。
访问函数:
| QString | zPosRole() const |
| void | setZPosRole(const QString &role) |
通知信号:
| void | zPosRoleChanged(const QString &role) |
zPosRolePattern : QRegularExpression
该属性用于指定在将 z 位置角色映射的值用作项目位置值之前,是否对其进行搜索和替换操作。
该属性指定用于查找映射值中待替换部分的正则表达式,而zPosRoleReplace 属性则包含替换字符串。
访问函数:
| QRegularExpression | zPosRolePattern() const |
| void | setZPosRolePattern(const QRegularExpression &pattern) |
通知信号:
| void | zPosRolePatternChanged(const QRegularExpression &pattern) |
另请参阅 zPosRole 和zPosRoleReplace 。
zPosRoleReplace : QString
该属性用于存储与“z 位置”角色模式配合使用的替换内容。
默认值为空字符串。有关使用正则表达式进行搜索和替换的更多信息,请参阅函数QString::replace(constQRegularExpression &rx, constQString &after) 的文档。
访问函数:
| QString | zPosRoleReplace() const |
| void | setZPosRoleReplace(const QString &replace) |
通知器信号:
| void | zPosRoleReplaceChanged(const QString &replace) |
另请参阅 zPosRole 和zPosRolePattern 。
成员函数文档
[explicit] QItemModelScatterDataProxy::QItemModelScatterDataProxy(QObject *parent = nullptr)
使用可选的parent 实例来构造QItemModelScatterDataProxy。
[explicit] QItemModelScatterDataProxy::QItemModelScatterDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr)
使用itemModel 和可选的parent 来构建QItemModelScatterDataProxy。该代理不会拥有itemModel 的所有权,因为通常项模型由其他控件拥有。
[explicit] QItemModelScatterDataProxy::QItemModelScatterDataProxy(QAbstractItemModel *itemModel, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, QObject *parent = nullptr)
使用itemModel 以及可选的parent 来构建QItemModelScatterDataProxy。该代理不会拥有itemModel 的所有权,因为项目模型通常由其他控件拥有。xPosRole 属性设置为xPosRole ,yPosRole 属性设置为yPosRole ,zPosRole 属性设置为zPosRole 。
[explicit] QItemModelScatterDataProxy::QItemModelScatterDataProxy(QAbstractItemModel *itemModel, const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QString &rotationRole, QObject *parent = nullptr)
使用itemModel 以及可选的parent 来构建QItemModelScatterDataProxy。该代理不会拥有itemModel 的所有权,因为项目模型通常由其他控件拥有。xPosRole 属性设置为xPosRole ,yPosRole 属性设置为yPosRole ,zPosRole 属性设置为zPosRole ,rotationRole 属性设置为rotationRole 。
[override virtual noexcept] QItemModelScatterDataProxy::~QItemModelScatterDataProxy()
销毁QItemModelScatterDataProxy 。
void QItemModelScatterDataProxy::remap(const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QString &rotationRole)
更改了xPosRole 、yPosRole 、zPosRole 和rotationRole 的映射关系。
void QItemModelScatterDataProxy::remap(const QString &xPosRole, const QString &yPosRole, const QString &zPosRole, const QString &rotationRole, const QString &scaleRole)
更改了xPosRole 、yPosRole 、zPosRole 、rotationRole 以及scaleRole 的映射关系。
void QItemModelScatterDataProxy::setItemModel(QAbstractItemModel *itemModel)
将itemModel 设置为Q3DScatterWidgetItem 的项模型。不会获取该模型的所有权,但会与其建立连接以监听变化。
注意: 这是属性itemModel 的设置器 函数。
另请参阅 itemModel()。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.