QItemModelSurfaceDataProxy Class

Proxy class for presenting data in item models with Q3DSurface . 更多...

头: #include <QItemModelSurfaceDataProxy>
CMake: find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
qmake: QT += datavisualization
Since: QtDataVisualization 1.0
实例化: ItemModelSurfaceDataProxy
继承: QSurfaceDataProxy

公共类型

enum MultiMatchBehavior { MMBFirst, MMBLast, MMBAverage, MMBCumulativeY }

特性

公共函数

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 ()
bool autoColumnCategories () const
bool autoRowCategories () const
QStringList columnCategories () const
int columnCategoryIndex (const QString & category )
QString columnRole () const
QRegularExpression columnRolePattern () const
QString columnRoleReplace () const
QAbstractItemModel * itemModel () const
QItemModelSurfaceDataProxy::MultiMatchBehavior multiMatchBehavior () const
void remap (const QString & rowRole , const QString & columnRole , const QString & xPosRole , const QString & yPosRole , const QString & zPosRole , const QStringList & rowCategories , const QStringList & columnCategories )
QStringList rowCategories () const
int rowCategoryIndex (const QString & category )
QString rowRole () const
QRegularExpression rowRolePattern () const
QString rowRoleReplace () const
void setAutoColumnCategories (bool enable )
void setAutoRowCategories (bool enable )
void setColumnCategories (const QStringList & categories )
void setColumnRole (const QString & role )
void setColumnRolePattern (const QRegularExpression & pattern )
void setColumnRoleReplace (const QString & replace )
void setItemModel (QAbstractItemModel * itemModel )
void setMultiMatchBehavior (QItemModelSurfaceDataProxy::MultiMatchBehavior behavior )
void setRowCategories (const QStringList & categories )
void setRowRole (const QString & role )
void setRowRolePattern (const QRegularExpression & pattern )
void setRowRoleReplace (const QString & replace )
void setUseModelCategories (bool enable )
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 )
bool useModelCategories () const
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 autoColumnCategoriesChanged (bool enable )
void autoRowCategoriesChanged (bool enable )
void columnCategoriesChanged ()
void columnRoleChanged (const QString & role )
void columnRolePatternChanged (const QRegularExpression & pattern )
void columnRoleReplaceChanged (const QString & replace )
void itemModelChanged (const QAbstractItemModel * itemModel )
void multiMatchBehaviorChanged (QItemModelSurfaceDataProxy::MultiMatchBehavior behavior )
void rowCategoriesChanged ()
void rowRoleChanged (const QString & role )
void rowRolePatternChanged (const QRegularExpression & pattern )
void rowRoleReplaceChanged (const QString & replace )
void useModelCategoriesChanged (bool enable )
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 )

详细描述

QItemModelSurfaceDataProxy allows you to use QAbstractItemModel derived models as a data source for Q3DSurface . It uses the defined mappings to map data from the model to rows, columns, and surface points of Q3DSurface graph.

Data is resolved asynchronously whenever the mapping or the model changes. QSurfaceDataProxy::arrayReset () is emitted when the data has been resolved. However, when useModelCategories property is set to true , single item changes are resolved synchronously, unless the same frame also contains a change that causes the whole model to be resolved.

Mappings can be used in the following ways:

  • useModelCategories property is set to true , this proxy will map rows and columns of QAbstractItemModel to rows and columns of Q3DSurface , and uses the value returned for Qt::DisplayRole as Y-position by default. Row and column headers are used for Z-position and X-position by default, if they can be converted to floats. Otherwise row and column indices are used. The Y-position role to be used can be redefined if Qt::DisplayRole is not suitable. The Z-position and X-position roles to be used can be redefined if the headers or indices are not suitable.
  • For models that do not have data already neatly sorted into rows and columns, such as QAbstractListModel based models, you can define a role from the model to map for each of row, column and Y-position.
  • If you do not want to include all data contained in the model, or the autogenerated rows and columns are not ordered as you wish, you can specify which rows and columns should be included and in which order by defining an explicit list of categories for either or both of rows and columns.

For example, assume that you have a custom QAbstractItemModel storing surface topography data. Each item in the model has the roles "longitude", "latitude", and "height". The item model already contains the data properly sorted so that longitudes and latitudes are first encountered in correct order, which enables us to utilize the row and column category autogeneration. You could do the following to display the data in a surface graph:

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

If the fields of the model do not contain the data in the exact format you need, you can specify a search pattern regular expression and a replace rule for each role to get the value in a format you need. For more information how the replace using regular expressions works, see QString::replace (const QRegularExpression &rx, const QString &after) function documentation. Note that using regular expressions has an impact on the performance, so it's more efficient to utilize item models where doing search and replace is not necessary to get the desired values.

For example about using the search patterns in conjunction with the roles, see ItemModelBarDataProxy usage in Simple Bar Graph 范例。

另请参阅 Qt Data Visualization 数据处理 .

成员类型文档编制

enum QItemModelSurfaceDataProxy:: MultiMatchBehavior

Behavior types for QItemModelSurfaceDataProxy::multiMatchBehavior 特性。

常量 描述
QItemModelSurfaceDataProxy::MMBFirst 0 The position values are taken from the first item in the item model that matches each row/column combination.
QItemModelSurfaceDataProxy::MMBLast 1 The position values are taken from the last item in the item model that matches each row/column combination.
QItemModelSurfaceDataProxy::MMBAverage 2 The position values from all items matching each row/column combination are averaged together and the averages are used as the surface point position.
QItemModelSurfaceDataProxy::MMBCumulativeY 3 For X and Z values this acts just like MMBAverage , but Y values are added together instead of averaged and the total is used as the surface point Y position.

特性文档编制

autoColumnCategories : bool

This property holds whether column categories are generated automatically.

当设为 true , the mapping ignores any explicitly set column categories and overwrites them with automatically generated ones whenever the data from the model is resolved. Defaults to true .

访问函数:

bool autoColumnCategories () const
void setAutoColumnCategories (bool enable )

通知程序信号:

void autoColumnCategoriesChanged (bool enable )

autoRowCategories : bool

This property holds whether row categories are generated automatically.

当设为 true , the mapping ignores any explicitly set row categories and overwrites them with automatically generated ones whenever the data from the model is resolved. Defaults to true .

访问函数:

bool autoRowCategories () const
void setAutoRowCategories (bool enable )

通知程序信号:

void autoRowCategoriesChanged (bool enable )

columnCategories : QStringList

This property holds the column categories for the mapping.

访问函数:

QStringList columnCategories () const
void setColumnCategories (const QStringList & categories )

通知程序信号:

void columnCategoriesChanged ()

columnRole : QString

This property holds the item model role to map to the column category.

In addition to defining which column the data belongs to, the value indicated by the column role is also set as the X-coordinate value of QSurfaceDataItem when model data is resolved, unless a separate x position role is also defined.

访问函数:

QString columnRole () const
void setColumnRole (const QString & role )

通知程序信号:

void columnRoleChanged (const QString & role )

columnRolePattern : QRegularExpression

This property holds whether a search and replace is done on the value mapped by the column role before it is used as a column category.

This property specifies the regular expression to find the portion of the mapped value to replace and the columnRoleReplace property contains the replacement string.

访问函数:

QRegularExpression columnRolePattern () const
void setColumnRolePattern (const QRegularExpression & pattern )

通知程序信号:

void columnRolePatternChanged (const QRegularExpression & pattern )

另请参阅 columnRole and columnRoleReplace .

columnRoleReplace : QString

This property holds the replace content to be used in conjunction with a column role pattern.

Defaults to an empty string. For more information on how the search and replace using regular expressions works, see the QString::replace (const QRegularExpression &rx, const QString &after) function documentation.

访问函数:

QString columnRoleReplace () const
void setColumnRoleReplace (const QString & replace )

通知程序信号:

void columnRoleReplaceChanged (const QString & replace )

另请参阅 columnRole and columnRolePattern .

itemModel : QAbstractItemModel *

This property holds the item model used as a data source for the 3D surface.

访问函数:

QAbstractItemModel * itemModel () const
void setItemModel (QAbstractItemModel * itemModel )

通知程序信号:

void itemModelChanged (const QAbstractItemModel * itemModel )

multiMatchBehavior : MultiMatchBehavior

How multiple matches for each row/column combination are handled.

默认为 MMBLast .

For example, you might have an item model with timestamped data taken at irregular intervals and you want to visualize an average position of data items on each hour with a surface graph. This can be done by specifying row and column categories so that each surface point represents an hour, and setting this property to MMBAverage .

访问函数:

QItemModelSurfaceDataProxy::MultiMatchBehavior multiMatchBehavior () const
void setMultiMatchBehavior (QItemModelSurfaceDataProxy::MultiMatchBehavior behavior )

通知程序信号:

void multiMatchBehaviorChanged (QItemModelSurfaceDataProxy::MultiMatchBehavior behavior )

rowCategories : QStringList

This property holds the row categories for the mapping.

访问函数:

QStringList rowCategories () const
void setRowCategories (const QStringList & categories )

通知程序信号:

void rowCategoriesChanged ()

rowRole : QString

This property holds the item model role to map to the row category.

In addition to defining which row the data belongs to, the value indicated by the row role is also set as the Z-coordinate value of QSurfaceDataItem when model data is resolved, unless a separate z position role is also defined.

访问函数:

QString rowRole () const
void setRowRole (const QString & role )

通知程序信号:

void rowRoleChanged (const QString & role )

rowRolePattern : QRegularExpression

This property holds whether a search and replace is performed on the value mapped by the row role before it is used as a row category.

This property specifies the regular expression to find the portion of the mapped value to replace and the rowRoleReplace property contains the replacement string.

访问函数:

QRegularExpression rowRolePattern () const
void setRowRolePattern (const QRegularExpression & pattern )

通知程序信号:

void rowRolePatternChanged (const QRegularExpression & pattern )

另请参阅 rowRole and rowRoleReplace .

rowRoleReplace : QString

This property holds the replace content to be used in conjunction with the row role pattern.

Defaults to an empty string. For more information on how the search and replace using regular expressions works, see QString::replace (const QRegularExpression &rx, const QString &after) function documentation.

访问函数:

QString rowRoleReplace () const
void setRowRoleReplace (const QString & replace )

通知程序信号:

void rowRoleReplaceChanged (const QString & replace )

另请参阅 rowRole and rowRolePattern .

useModelCategories : bool

This property holds whether row and column roles and categories are used for mapping.

当设为 true , the mapping ignores row and column roles and categories, and uses the rows and columns from the model instead. Defaults to false .

访问函数:

bool useModelCategories () const
void setUseModelCategories (bool enable )

通知程序信号:

void useModelCategoriesChanged (bool enable )

xPosRole : QString

This property holds the item model role to map to the X position.

If this role is not defined, columnRole is used to determine the X-coordinate value of the resolved QSurfaceDataItem 对象。

访问函数:

QString xPosRole () const
void setXPosRole (const QString & role )

通知程序信号:

void xPosRoleChanged (const QString & role )

xPosRolePattern : QRegularExpression

This property holds whether a search and replace is done on the value mapped by the x position role before it is used as an item position value.

This property specifies the regular expression to find the portion of the mapped value to replace and the xPosRoleReplace property contains the replacement string.

访问函数:

QRegularExpression xPosRolePattern () const
void setXPosRolePattern (const QRegularExpression & pattern )

通知程序信号:

void xPosRolePatternChanged (const QRegularExpression & pattern )

另请参阅 xPosRole and xPosRoleReplace .

xPosRoleReplace : QString

This property holds the replace content to be used in conjunction with an x position role pattern.

Defaults to an empty string. For more information on how the search and replace using regular expressions works, see the QString::replace (const QRegularExpression &rx, const QString &after) function documentation.

访问函数:

QString xPosRoleReplace () const
void setXPosRoleReplace (const QString & replace )

通知程序信号:

void xPosRoleReplaceChanged (const QString & replace )

另请参阅 xPosRole and xPosRolePattern .

yPosRole : QString

This property holds the item model role to map to the Y position.

访问函数:

QString yPosRole () const
void setYPosRole (const QString & role )

通知程序信号:

void yPosRoleChanged (const QString & role )

yPosRolePattern : QRegularExpression

This property holds whether a search and replace is done on the value mapped by the y position role before it is used as an item position value.

This property specifies the regular expression to find the portion of the mapped value to replace and the yPosRoleReplace property contains the replacement string.

访问函数:

QRegularExpression yPosRolePattern () const
void setYPosRolePattern (const QRegularExpression & pattern )

通知程序信号:

void yPosRolePatternChanged (const QRegularExpression & pattern )

另请参阅 yPosRole and yPosRoleReplace .

yPosRoleReplace : QString

This property holds the replace content to be used in conjunction with an y position role pattern.

Defaults to an empty string. For more information on how the search and replace using regular expressions works, see the QString::replace (const QRegularExpression &rx, const QString &after) function documentation.

访问函数:

QString yPosRoleReplace () const
void setYPosRoleReplace (const QString & replace )

通知程序信号:

void yPosRoleReplaceChanged (const QString & replace )

另请参阅 yPosRole and yPosRolePattern .

zPosRole : QString

This property holds the item model role to map to the Z position.

If this role is not defined, rowRole is used to determine the Z-coordinate value of resolved QSurfaceDataItem 对象。

访问函数:

QString zPosRole () const
void setZPosRole (const QString & role )

通知程序信号:

void zPosRoleChanged (const QString & role )

zPosRolePattern : QRegularExpression

This property holds whether a search and replace is done on the value mapped by the z position role before it is used as an item position value.

This property specifies the regular expression to find the portion of the mapped value to replace and the zPosRoleReplace property contains the replacement string.

访问函数:

QRegularExpression zPosRolePattern () const
void setZPosRolePattern (const QRegularExpression & pattern )

通知程序信号:

void zPosRolePatternChanged (const QRegularExpression & pattern )

另请参阅 zPosRole and zPosRoleReplace .

zPosRoleReplace : QString

This property holds the replace content to be used in conjunction with a z position role pattern.

Defaults to an empty string. For more information on how the search and replace using regular expressions works, see the QString::replace (const QRegularExpression &rx, const QString &after) function documentation.

访问函数:

QString zPosRoleReplace () const
void setZPosRoleReplace (const QString & replace )

通知程序信号:

void zPosRoleReplaceChanged (const QString & replace )

另请参阅 zPosRole and zPosRolePattern .

成员函数文档编制

[explicit] QItemModelSurfaceDataProxy:: QItemModelSurfaceDataProxy ( QObject * parent = nullptr)

Constructs QItemModelSurfaceDataProxy with optional parent .

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

Constructs QItemModelSurfaceDataProxy with itemModel 和可选 parent . Proxy doesn't take ownership of the itemModel , as typically item models are owned by other controls.

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

Constructs QItemModelSurfaceDataProxy with itemModel 和可选 parent . Proxy doesn't take ownership of the itemModel , as typically item models are owned by other controls. The yPosRole role is set to yPosRole . This constructor is meant to be used with models that have data properly sorted in rows and columns already, so it also sets useModelCategories 特性到 true .

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

Constructs QItemModelSurfaceDataProxy with itemModel 和可选 parent . Proxy doesn't take ownership of the itemModel , as typically item models are owned by other controls. The role mappings are set with rowRole , columnRole ,和 yPosRole zPosRole xPosRole are set to rowRole and columnRole ,分别。

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

Constructs QItemModelSurfaceDataProxy with itemModel 和可选 parent . Proxy doesn't take ownership of the itemModel , as typically item models are owned by other controls. The role mappings are set with rowRole , columnRole , xPosRole , yPosRole ,和 zPosRole .

[explicit] QItemModelSurfaceDataProxy:: QItemModelSurfaceDataProxy ( QAbstractItemModel * itemModel , const QString & rowRole , const QString & columnRole , const QString & yPosRole , const QStringList & rowCategories , const QStringList & columnCategories , QObject * parent = nullptr)

Constructs QItemModelSurfaceDataProxy with itemModel 和可选 parent . Proxy doesn't take ownership of the itemModel , as typically item models are owned by other controls. The role mappings are set with rowRole , columnRole ,和 yPosRole zPosRole xPosRole are set to rowRole and columnRole , respectively. Row and column categories are set with rowCategories and columnCategories . This constructor also sets autoRowCategories and autoColumnCategories 为 false。

[explicit] QItemModelSurfaceDataProxy:: 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)

Constructs QItemModelSurfaceDataProxy with itemModel 和可选 parent . Proxy doesn't take ownership of the itemModel , as typically item models are owned by other controls. The role mappings are set with rowRole , columnRole , xPosRole , yPosRole ,和 zPosRole . Row and column categories are set with rowCategories and columnCategories . This constructor also sets autoRowCategories and autoColumnCategories 为 false。

[虚拟] QItemModelSurfaceDataProxy:: ~QItemModelSurfaceDataProxy ()

销毁 QItemModelSurfaceDataProxy .

[invokable] int QItemModelSurfaceDataProxy:: columnCategoryIndex (const QString & category )

Returns the index of the specified category in the column categories list. If the category is not found, -1 is returned.

注意: If the automatic column categories generation is in use, this method will not return a valid index before the data in the model is resolved for the first time.

注意: 此函数可以被援引,通过元对象系统和从 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 )

变化 rowRole , columnRole , xPosRole , yPosRole , zPosRole , rowCategories and columnCategories to the mapping.

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

Returns the index of the specified category in the row categories list. If the row categories list is empty, -1 is returned.

注意: If the automatic row categories generation is in use, this method will not return a valid index before the data in the model is resolved for the first time.

注意: 此函数可以被援引,通过元对象系统和从 QML。见 Q_INVOKABLE .

void QItemModelSurfaceDataProxy:: setItemModel ( QAbstractItemModel * itemModel )

Sets the item model to itemModel . Does not take ownership of the model, but does connect to it to listen for changes.

注意: setter 函数对于特性 itemModel .

另请参阅 itemModel ().