En esta página

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.

ConstanteValorDescripción
QItemModelBarDataProxy::MMBFirst0El valor se toma del primer elemento del modelo de elementos que coincide con cada combinación de fila/columna.
QItemModelBarDataProxy::MMBLast1El valor se toma del último elemento del modelo de elementos que coincide con cada combinación de fila/columna.
QItemModelBarDataProxy::MMBAverage2Los 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::MMBCumulative3Los 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.