QItemModelBarDataProxy Class
Clase proxy para presentar datos en modelos de elementos con Q3DBars. Más...
| Cabecera: | #include <QItemModelBarDataProxy> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DataVisualization)target_link_libraries(mytarget PRIVATE Qt6::DataVisualization) |
| qmake: | QT += datavisualization |
| Desde: | QtDataVisualization 1.0 |
| En QML: | ItemModelBarDataProxy |
| Hereda: | QBarDataProxy |
Tipos Públicos
| enum | MultiMatchBehavior { MMBFirst, MMBLast, MMBAverage, MMBCumulative } |
Propiedades
|
|
Funciones públicas
| QItemModelBarDataProxy(QObject *parent = nullptr) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &valueRole, QObject *parent = nullptr) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, QObject *parent = nullptr) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, QObject *parent = nullptr) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr) | |
| virtual | ~QItemModelBarDataProxy() |
| 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 |
| QItemModelBarDataProxy::MultiMatchBehavior | multiMatchBehavior() const |
| void | remap(const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories) |
| QString | rotationRole() const |
| QRegularExpression | rotationRolePattern() const |
| QString | rotationRoleReplace() const |
| 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(QItemModelBarDataProxy::MultiMatchBehavior behavior) |
| void | setRotationRole(const QString &role) |
| void | setRotationRolePattern(const QRegularExpression &pattern) |
| void | setRotationRoleReplace(const QString &replace) |
| 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 | setValueRole(const QString &role) |
| void | setValueRolePattern(const QRegularExpression &pattern) |
| void | setValueRoleReplace(const QString &replace) |
| bool | useModelCategories() const |
| QString | valueRole() const |
| QRegularExpression | valueRolePattern() const |
| QString | valueRoleReplace() const |
Señales
| 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(QItemModelBarDataProxy::MultiMatchBehavior behavior) |
| void | rotationRoleChanged(const QString &role) |
| void | rotationRolePatternChanged(const QRegularExpression &pattern) |
| void | rotationRoleReplaceChanged(const QString &replace) |
| void | rowCategoriesChanged() |
| void | rowRoleChanged(const QString &role) |
| void | rowRolePatternChanged(const QRegularExpression &pattern) |
| void | rowRoleReplaceChanged(const QString &replace) |
| void | useModelCategoriesChanged(bool enable) |
| void | valueRoleChanged(const QString &role) |
| void | valueRolePatternChanged(const QRegularExpression &pattern) |
| void | valueRoleReplaceChanged(const QString &replace) |
Descripción Detallada
QItemModelBarDataProxy permite utilizar modelos derivados de QAbstractItemModel como fuente de datos para Q3DBars. Utiliza los mapeos definidos para mapear datos del modelo a filas, columnas y valores del gráfico Q3DBars.
Los datos se resuelven de forma asíncrona cada vez que cambian las asignaciones o el modelo. QBarDataProxy::arrayReset() se emite cuando los datos se han resuelto. Sin embargo, cuando la propiedad useModelCategories se establece en true, los cambios de un solo elemento se resuelven de forma sincrónica, a menos que el mismo marco también contenga un cambio que provoque que se resuelva todo el modelo.
Las asignaciones pueden utilizarse de las siguientes maneras:
- Si la propiedad useModelCategories se establece en true, este proxy mapeará filas y columnas de QAbstractItemModel directamente a filas y columnas de Q3DBars, y utiliza el valor devuelto para Qt::DisplayRole como valor de barra por defecto. El rol de valor a utilizar puede redefinirse si Qt::DisplayRole no es adecuado.
- Para los modelos que no tienen los datos ya ordenados en filas y columnas, como los modelos basados en QAbstractListModel, se puede definir un rol del modelo a mapear para cada una de las filas, columnas y valores.
- Si no desea incluir todos los datos contenidos en el modelo, o las filas y columnas autogeneradas no están ordenadas como desea, puede especificar qué filas y columnas deben incluirse y en qué orden definiendo una lista explícita de categorías para una o ambas filas y columnas.
Por ejemplo, suponga que tiene un modelo personalizado QAbstractItemModel para almacenar diversos valores mensuales relacionados con una empresa. Cada elemento del modelo tiene los roles "año", "mes", "ingresos" y "gastos". Podrías hacer lo siguiente para mostrar los datos en un gráfico de barras:
// 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" -> "2006" // 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" QStringList years; QStringList months; years << "2006" << "2007" << "2008" << "2009" << "2010" << "2011" << "2012"; months << "jan" << "feb" << "mar" << "apr" << "may" << "jun" << "jul" << "aug" << "sep" << "oct" << "nov" << "dec"; QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy(customModel, QStringLiteral("year"), // Row role QStringLiteral("month"), // Column role QStringLiteral("income"), // Value role years, // Row categories months); // Column categories //... // To display different data later, you can simply change the mapping. proxy->setValueRole(QStringLiteral("expenses"));
Si los campos del modelo no contienen los datos en el formato exacto que necesita, puede especificar una expresión regular de patrón de búsqueda y una regla de reemplazo para cada rol para obtener el valor en un formato que necesite. Para obtener más información sobre cómo funciona el reemplazo mediante expresiones regulares, consulte la documentación de la función QString::replace(const QRegularExpression &rx, const QString &after). Tenga en cuenta que el uso de expresiones regulares tiene un impacto en el rendimiento, por lo que es más eficiente utilizar modelos de elementos en los que no sea necesario realizar búsquedas y reemplazos para obtener los valores deseados.
Para ver un ejemplo sobre el uso de los patrones de búsqueda junto con las funciones, consulte Ejemplo de gráfico de barras simple.
Véase también Qt Data Visualization Data Handling.
Documentación de tipos de miembros
enum QItemModelBarDataProxy::MultiMatchBehavior
Tipos de comportamiento para la propiedad QItemModelBarDataProxy::multiMatchBehavior.
| Constante | Valor | Descripción |
|---|---|---|
QItemModelBarDataProxy::MMBFirst | 0 | El valor se toma del primer elemento del modelo de elementos que coincide con cada combinación de fila/columna. |
QItemModelBarDataProxy::MMBLast | 1 | El valor se toma del último elemento del modelo de elementos que coincide con cada combinación de fila/columna. |
QItemModelBarDataProxy::MMBAverage | 2 | Los valores de todos los elementos que coinciden con cada combinación fila/columna se promedian y la media se utiliza como valor de la barra. |
QItemModelBarDataProxy::MMBCumulative | 3 | Los valores de todos los elementos que coinciden con cada combinación de fila/columna se suman y el total se utiliza como valor de la barra. |
Documentación de propiedades
autoColumnCategories : bool
Esta propiedad indica si las categorías de columna se generan automáticamente.
Cuando se establece en true, la asignación ignora cualquier categoría de columna establecida explícitamente y las sobrescribe con las generadas automáticamente cada vez que se resuelven los datos del modelo. Por defecto es true.
Funciones de acceso:
| bool | autoColumnCategories() const |
| void | setAutoColumnCategories(bool enable) |
Señal de notificador:
| void | autoColumnCategoriesChanged(bool enable) |
autoRowCategories : bool
Esta propiedad indica si las categorías de filas se generan automáticamente.
Cuando se establece en true, la asignación ignora cualquier categoría de fila establecida explícitamente y las sobrescribe con las generadas automáticamente cada vez que se resuelven los datos del modelo. Por defecto es true.
Funciones de acceso:
| bool | autoRowCategories() const |
| void | setAutoRowCategories(bool enable) |
Señal de notificador:
| void | autoRowCategoriesChanged(bool enable) |
columnCategories : QStringList
Esta propiedad contiene las categorías de columna para la asignación.
Funciones de acceso:
| QStringList | columnCategories() const |
| void | setColumnCategories(const QStringList &categories) |
Señal del notificador:
| void | columnCategoriesChanged() |
columnRole : QString
Esta propiedad contiene el rol de la columna para el mapeo.
Funciones de acceso:
| QString | columnRole() const |
| void | setColumnRole(const QString &role) |
Señal de notificador:
| void | columnRoleChanged(const QString &role) |
columnRolePattern : QRegularExpression
Esta propiedad indica si se realiza una búsqueda y reemplazo en el valor asignado por el rol de columna antes de ser utilizado como categoría de columna.
Esta propiedad especifica la expresión regular para encontrar la porción del valor mapeado a reemplazar y la propiedad columnRoleReplace contiene la cadena de reemplazo. Esto es útil, por ejemplo, para analizar categorías de filas y columnas a partir de un único campo de fecha y hora en el modelo de artículos.
Funciones de acceso:
| QRegularExpression | columnRolePattern() const |
| void | setColumnRolePattern(const QRegularExpression &pattern) |
Señal de notificador:
| void | columnRolePatternChanged(const QRegularExpression &pattern) |
Véase también columnRole y columnRoleReplace.
columnRoleReplace : QString
Esta propiedad contiene el contenido de reemplazo que se utilizará junto con columnRolePattern.
Por defecto es una cadena vacía. Para más información sobre cómo funciona la búsqueda y sustitución mediante expresiones regulares, consulte la documentación de la función QString::replace(const QRegularExpression &rx, const QString &after).
Funciones de acceso:
| QString | columnRoleReplace() const |
| void | setColumnRoleReplace(const QString &replace) |
Señal de notificador:
| void | columnRoleReplaceChanged(const QString &replace) |
Véase también columnRole y columnRolePattern.
itemModel : QAbstractItemModel*
Esta propiedad contiene el modelo del artículo.
Funciones de acceso:
| QAbstractItemModel * | itemModel() const |
| void | setItemModel(QAbstractItemModel *itemModel) |
Señal del notificador:
| void | itemModelChanged(const QAbstractItemModel *itemModel) |
multiMatchBehavior : MultiMatchBehavior
Cómo se manejan las coincidencias múltiples para cada combinación de fila/columna.
Por defecto es QItemModelBarDataProxy::MMBLast. El comportamiento elegido afecta tanto al valor de la barra como a la rotación.
Por ejemplo, puede tener un modelo de elementos con datos con marca de tiempo tomados a intervalos irregulares y desea visualizar el valor total de los elementos de datos en cada día con un gráfico de barras. Para ello, especifique las categorías de filas y columnas de modo que cada barra represente un día y establezca multiMatchBehavior en QItemModelBarDataProxy::MMBCumulative.
Funciones de acceso:
| QItemModelBarDataProxy::MultiMatchBehavior | multiMatchBehavior() const |
| void | setMultiMatchBehavior(QItemModelBarDataProxy::MultiMatchBehavior behavior) |
Señal del notificador:
| void | multiMatchBehaviorChanged(QItemModelBarDataProxy::MultiMatchBehavior behavior) |
rotationRole : QString
Esta propiedad contiene la función de rotación para la asignación.
Funciones de acceso:
| QString | rotationRole() const |
| void | setRotationRole(const QString &role) |
Señal de notificador:
| void | rotationRoleChanged(const QString &role) |
rotationRolePattern : QRegularExpression
Esta propiedad mantiene si se realiza una búsqueda y reemplazo en el valor mapeado por el rol de rotación antes de ser utilizado como ángulo de rotación de la barra.
Esta propiedad especifica la expresión regular para encontrar la porción del valor mapeado a reemplazar y la propiedad rotationRoleReplace contiene la cadena de reemplazo.
Funciones de acceso:
| QRegularExpression | rotationRolePattern() const |
| void | setRotationRolePattern(const QRegularExpression &pattern) |
Señal de notificador:
| void | rotationRolePatternChanged(const QRegularExpression &pattern) |
Véase también rotationRole y rotationRoleReplace.
rotationRoleReplace : QString
Esta propiedad contiene el contenido de reemplazo que se utilizará junto con rotationRolePattern.
Por defecto es una cadena vacía. Para más información sobre cómo funciona la búsqueda y sustitución mediante expresiones regulares, consulte la documentación de la función QString::replace(const QRegularExpression &rx, const QString &after).
Funciones de acceso:
| QString | rotationRoleReplace() const |
| void | setRotationRoleReplace(const QString &replace) |
Señal de notificador:
| void | rotationRoleReplaceChanged(const QString &replace) |
Véase también rotationRole y rotationRolePattern.
rowCategories : QStringList
Esta propiedad contiene las categorías de filas para la asignación.
Funciones de acceso:
| QStringList | rowCategories() const |
| void | setRowCategories(const QStringList &categories) |
Señal del notificador:
| void | rowCategoriesChanged() |
rowRole : QString
Esta propiedad contiene el rol de fila para la asignación.
Funciones de acceso:
| QString | rowRole() const |
| void | setRowRole(const QString &role) |
Señal de notificador:
| void | rowRoleChanged(const QString &role) |
rowRolePattern : QRegularExpression
Esta propiedad indica si se realiza una búsqueda y reemplazo en el valor asignado por el rol de fila antes de utilizarlo como categoría de fila.
Esta propiedad especifica la expresión regular para encontrar la porción del valor mapeado a reemplazar y la propiedad rowRoleReplace contiene la cadena de reemplazo. Esto es útil, por ejemplo, para analizar categorías de filas y columnas a partir de un único campo de fecha y hora en el modelo de artículos.
Funciones de acceso:
| QRegularExpression | rowRolePattern() const |
| void | setRowRolePattern(const QRegularExpression &pattern) |
Señal de notificador:
| void | rowRolePatternChanged(const QRegularExpression &pattern) |
Véase también rowRole y rowRoleReplace.
rowRoleReplace : QString
Esta propiedad contiene el contenido de reemplazo que se utilizará junto con rowRolePattern.
Por defecto es una cadena vacía. Para más información sobre cómo funciona la búsqueda y sustitución mediante expresiones regulares, consulte la documentación de la función QString::replace(const QRegularExpression &rx, const QString &after).
Funciones de acceso:
| QString | rowRoleReplace() const |
| void | setRowRoleReplace(const QString &replace) |
Señal de notificador:
| void | rowRoleReplaceChanged(const QString &replace) |
Véase también rowRole y rowRolePattern.
useModelCategories : bool
Esta propiedad establece si los roles y categorías de filas y columnas se utilizan para el mapeo.
Cuando se establece a true, el mapeo ignora los roles y categorías de filas y columnas, y utiliza en su lugar las filas y columnas del modelo. Por defecto es false.
Funciones de acceso:
| bool | useModelCategories() const |
| void | setUseModelCategories(bool enable) |
Señal de notificador:
| void | useModelCategoriesChanged(bool enable) |
valueRole : QString
Esta propiedad contiene la función de valor para la asignación.
Funciones de acceso:
| QString | valueRole() const |
| void | setValueRole(const QString &role) |
Señal de notificador:
| void | valueRoleChanged(const QString &role) |
valueRolePattern : QRegularExpression
Esta propiedad mantiene si se realiza una búsqueda y reemplazo en el valor mapeado por el rol value antes de ser utilizado como valor de barra.
Esta propiedad especifica la expresión regular para encontrar la porción del valor mapeado a reemplazar y la propiedad valueRoleReplace contiene la cadena de reemplazo.
Funciones de acceso:
| QRegularExpression | valueRolePattern() const |
| void | setValueRolePattern(const QRegularExpression &pattern) |
Señal de notificador:
| void | valueRolePatternChanged(const QRegularExpression &pattern) |
Véase también valueRole y valueRoleReplace.
valueRoleReplace : QString
Esta propiedad contiene el contenido de reemplazo que se utilizará junto con valueRolePattern.
Por defecto es una cadena vacía. Para más información sobre cómo funciona la búsqueda y sustitución mediante expresiones regulares, consulte la documentación de la función QString::replace(const QRegularExpression &rx, const QString &after).
Funciones de acceso:
| QString | valueRoleReplace() const |
| void | setValueRoleReplace(const QString &replace) |
Señal de notificador:
| void | valueRoleReplaceChanged(const QString &replace) |
Véase también valueRole y valueRolePattern.
Documentación de las funciones miembro
[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QObject *parent = nullptr)
Construye QItemModelBarDataProxy con parent opcional .
[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr)
Construye QItemModelBarDataProxy con itemModel y parent opcional. El proxy no se apropia de itemModel, ya que normalmente los modelos de elementos son propiedad de otros controles.
[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &valueRole, QObject *parent = nullptr)
Construye QItemModelBarDataProxy con itemModel y parent opcional. El proxy no toma la propiedad de itemModel, ya que típicamente los modelos de ítems son propiedad de otros controles. El valor role se establece a valueRole. Este constructor está pensado para ser utilizado con modelos que ya tienen los datos correctamente ordenados en filas y columnas, por lo que también establece la propiedad useModelCategories a true.
[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, QObject *parent = nullptr)
Construye QItemModelBarDataProxy con itemModel y parent opcional. El proxy no se apropia de itemModel, ya que normalmente los modelos de elementos son propiedad de otros controles. Las asignaciones de roles se establecen con rowRole, columnRole, y valueRole.
[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, QObject *parent = nullptr)
Construye QItemModelBarDataProxy con itemModel y parent opcional. El proxy no se apropia de itemModel, ya que normalmente los modelos de elementos son propiedad de otros controles. Las asignaciones de roles se establecen con rowRole, columnRole, valueRole, y rotationRole.
[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr)
Construye QItemModelBarDataProxy con itemModel y parent opcional. El proxy no se apropia de itemModel, ya que normalmente los modelos de elementos son propiedad de otros controles. Las asignaciones de roles se establecen con rowRole, columnRole, y valueRole. Las categorías de filas y columnas se establecen con rowCategories y columnCategories. Este constructor también establece autoRowCategories y autoColumnCategories a false.
[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr)
Construye QItemModelBarDataProxy con itemModel y parent opcional. El proxy no se apropia de itemModel, ya que normalmente los modelos de elementos son propiedad de otros controles. Las asignaciones de roles se establecen con rowRole, columnRole, valueRole, y rotationRole. Las categorías de filas y columnas se establecen con rowCategories y columnCategories. Este constructor también establece autoRowCategories y autoColumnCategories en false.
[virtual noexcept] QItemModelBarDataProxy::~QItemModelBarDataProxy()
Destruye QItemModelBarDataProxy.
[invokable] int QItemModelBarDataProxy::columnCategoryIndex(const QString &category)
Devuelve el índice de la category especificada en la lista de categorías de columna. Si no se encuentra la categoría, se devuelve -1.
Nota: Si se está utilizando la generación automática de categorías de columnas, este método no devolverá un índice válido antes de que los datos del modelo se resuelvan por primera vez.
Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.
void QItemModelBarDataProxy::remap(const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories)
Cambia rowRole, columnRole, valueRole, rotationRole, rowCategories y columnCategories a la cartografía.
[invokable] int QItemModelBarDataProxy::rowCategoryIndex(const QString &category)
Devuelve el índice del category especificado en la lista de categorías de filas. Si la lista de categorías de filas está vacía, se devuelve -1.
Nota: Si se está utilizando la generación automática de categorías de filas, este método no devolverá un índice válido antes de que los datos del modelo se resuelvan por primera vez.
Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.
void QItemModelBarDataProxy::setItemModel(QAbstractItemModel *itemModel)
Establece el modelo del elemento en itemModel. No se apropia del modelo, pero se conecta a él para escuchar los cambios.
Nota: Función Setter para la propiedad itemModel.
Véase también 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.