Класс QItemModelBarDataProxy
Класс-прокси для представления данных в моделях элементов с Q3DBars. Подробнее...
| Заголовок: | #include <QItemModelBarDataProxy> |
| С версии: | QtDataVisualization 1.0 |
| Создается из: | ItemModelBarDataProxy |
| Наследует от: | QBarDataProxy |
Типы
| Перечисление | MultiMatchBehavior { MMBFirst, MMBLast, MMBAverage, MMBCumulative } |
Свойства
|
|
- 4 свойства унаследованы от QBarDataProxy
- 1 свойство унаследовано от QAbstractDataProxy
- 1 свойство унаследовано от QObject
Открытые функции
| QItemModelBarDataProxy(QObject *parent = Q_NULLPTR) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, QObject *parent = Q_NULLPTR) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &valueRole, QObject *parent = Q_NULLPTR) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, QObject *parent = Q_NULLPTR) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, QObject *parent = Q_NULLPTR) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = Q_NULLPTR) | |
| QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = Q_NULLPTR) | |
| virtual | ~QItemModelBarDataProxy() |
| bool | autoColumnCategories() const |
| bool | autoRowCategories() const |
| QStringList | columnCategories() const |
| int | columnCategoryIndex(const QString &category) |
| QString | columnRole() const |
| QRegExp | columnRolePattern() const |
| QString | columnRoleReplace() const |
| QAbstractItemModel * | itemModel() const |
| 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 |
| QRegExp | rotationRolePattern() const |
| QString | rotationRoleReplace() const |
| QStringList | rowCategories() const |
| int | rowCategoryIndex(const QString &category) |
| QString | rowRole() const |
| QRegExp | 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 QRegExp &pattern) |
| void | setColumnRoleReplace(const QString &replace) |
| void | setItemModel(QAbstractItemModel *itemModel) |
| void | setMultiMatchBehavior(MultiMatchBehavior behavior) |
| void | setRotationRole(const QString &role) |
| void | setRotationRolePattern(const QRegExp &pattern) |
| void | setRotationRoleReplace(const QString &replace) |
| void | setRowCategories(const QStringList &categories) |
| void | setRowRole(const QString &role) |
| void | setRowRolePattern(const QRegExp &pattern) |
| void | setRowRoleReplace(const QString &replace) |
| void | setUseModelCategories(bool enable) |
| void | setValueRole(const QString &role) |
| void | setValueRolePattern(const QRegExp &pattern) |
| void | setValueRoleReplace(const QString &replace) |
| bool | useModelCategories() const |
| QString | valueRole() const |
| QRegExp | valueRolePattern() const |
| QString | valueRoleReplace() const |
- 28 публичных функций унаследованы от QBarDataProxy
- 1 публичная функция унаследована от QAbstractDataProxy
- 32 публичных функции унаследованы от QObject
Сигналы
| void | autoColumnCategoriesChanged(bool enable) |
| void | autoRowCategoriesChanged(bool enable) |
| void | columnCategoriesChanged() |
| void | columnRoleChanged(const QString &role) |
| void | columnRolePatternChanged(const QRegExp &pattern) |
| void | columnRoleReplaceChanged(const QString &replace) |
| void | itemModelChanged(const QAbstractItemModel *itemModel) |
| void | multiMatchBehaviorChanged(MultiMatchBehavior behavior) |
| void | rotationRoleChanged(const QString &role) |
| void | rotationRolePatternChanged(const QRegExp &pattern) |
| void | rotationRoleReplaceChanged(const QString &replace) |
| void | rowCategoriesChanged() |
| void | rowRoleChanged(const QString &role) |
| void | rowRolePatternChanged(const QRegExp &pattern) |
| void | rowRoleReplaceChanged(const QString &replace) |
| void | useModelCategoriesChanged(bool enable) |
| void | valueRoleChanged(const QString &role) |
| void | valueRolePatternChanged(const QRegExp &pattern) |
| void | valueRoleReplaceChanged(const QString &replace) |
- 10 сигналов унаследованы от QBarDataProxy
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 публичный слот унаследован от QObject
- 11 статических публичных членов унаследованы от QObject
- 9 защищенных функций унаследованы от QObject
Подробное описание
Класс-прокси для представления данных в моделях элементов с Q3DBars.
QItemModelBarDataProxy позволяет использовать модели, производные от QAbstractItemModel, в качестве источника данных для Q3DBars. Он использует определенные сопоставления для отображения данных из модели в строки, столбцы и значения графика Q3DBars.
Данные разрешаются асинхронно всякий раз, когда изменяются сопоставления или модель. QBarDataProxy::arrayReset() генерируется, когда данные были разрешены. Однако, когда свойство useModelCategories установлено в true, изменения отдельных элементов разрешаются синхронно, если та же рамка не содержит изменение, которое приводит к разрешению всей модели.
Сопоставления могут быть использованы следующим образом:
- Если свойство useModelCategories установлено в true, этот прокси будет сопоставлять строки и столбцы QAbstractItemModel напрямую со строками и столбцами Q3DBars, и по умолчанию использует значение, возвращаемое для Qt::DisplayRole, как значение столбца. Роль значения может быть переопределена, если Qt::DisplayRole не подходит.
- Для моделей, которые не имеют данных, уже упорядоченных в строки и столбцы, таких как модели на основе QAbstractListModel, вы можете определить роль из модели для сопоставления для каждой из строки, столбца и значения.
- Если вы не хотите включать все данные, содержащиеся в модели, или автоматически сгенерированные строки и столбцы не упорядочены так, как вам нужно, вы можете указать, какие строки и столбцы следует включить и в каком порядке, определив явный список категорий для строк и/или столбцов.
Например, предположим, что у вас есть пользовательская модель QAbstractItemModel для хранения различных ежемесячных значений, относящихся к бизнесу. Каждый элемент в модели имеет роли «год», «месяц», «доход» и «расходы». Вы можете сделать следующее, чтобы отобразить данные на графике столбцов:
// 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")); Если поля модели не содержат данных в нужном формате, вы можете указать шаблон поиска с использованием регулярных выражений и правило замены для каждой роли, чтобы получить значение в нужном вам формате. Более подробную информацию о том, как работает замена с использованием регулярных выражений, см. в документации функции QString::replace(const QRegExp &rx, const QString &after). Обратите внимание, что использование регулярных выражений влияет на производительность, поэтому более эффективно использовать модели элементов, где поиск и замена не являются необходимыми для получения требуемых значений.
Пример использования шаблонов поиска совместно с ролями см. в Qt Quick 2 Bars Example.
См. также Обработка данных Qt Data Visualization.
Документация по типу члена
enum QItemModelBarDataProxy::MultiMatchBehavior
Типы поведения для свойства QItemModelBarDataProxy::multiMatchBehavior.
| Константа | Значение | Описание |
|---|---|---|
QItemModelBarDataProxy::MMBFirst |
0 |
Значение берется из первого элемента в модели элементов, который соответствует каждой комбинации строки/столбца. |
QItemModelBarDataProxy::MMBLast |
1 |
Значение берется из последнего элемента в модели элементов, который соответствует каждой комбинации строки/столбца. |
QItemModelBarDataProxy::MMBAverage |
2 |
Значения всех элементов, соответствующих каждой комбинации строки/столбца, усредняются, а среднее значение используется как значение столбца. |
QItemModelBarDataProxy::MMBCumulative |
3 |
Значения всех элементов, соответствующих каждой комбинации строки/столбца, суммируются, а сумма используется как значение столбца. |
Документация по свойствам
autoColumnCategories : bool
Это свойство указывает, генерируются ли категории столбцов автоматически.
При значении true, сопоставление игнорирует явно заданные категории столбцов и перезаписывает их автоматически сгенерированными значениями всякий раз, когда данные из модели разрешаются. По умолчанию true.
Функции доступа:
| bool | autoColumnCategories() const |
| void | setAutoColumnCategories(bool enable) |
Сигнал уведомления:
| void | autoColumnCategoriesChanged(bool enable) |
autoRowCategories : bool
Это свойство указывает, генерируются ли категории строк автоматически.
При значении true, сопоставление игнорирует явно заданные категории строк и перезаписывает их автоматически сгенерированными значениями всякий раз, когда данные из модели разрешаются. По умолчанию true.
Функции доступа:
| bool | autoRowCategories() const |
| void | setAutoRowCategories(bool enable) |
Сигнал уведомления:
| void | autoRowCategoriesChanged(bool enable) |
columnCategories : QStringList
Это свойство содержит категории столбцов для сопоставления.
Функции доступа:
| QStringList | columnCategories() const |
| void | setColumnCategories(const QStringList &categories) |
Сигнал уведомления:
| void | columnCategoriesChanged() |
columnRole : QString
Это свойство содержит роль столбца для сопоставления.
Функции доступа:
| QString | columnRole() const |
| void | setColumnRole(const QString &role) |
Сигнал уведомления:
| void | columnRoleChanged(const QString &role) |
columnRolePattern : QRegExp
Это свойство указывает, выполняется ли поиск и замена на значении, сопоставленном роли столбца, прежде чем оно используется как категория столбца.
Это свойство задаёт регулярное выражение для поиска части значения, подлежащей замене, а свойство columnRoleReplace содержит строку замены. Это полезно, например, для разбора категорий строк и столбцов из одного поля времени в модели элементов.
Функции доступа:
| QRegExp | columnRolePattern() const |
| void | setColumnRolePattern(const QRegExp &pattern) |
Сигнал уведомления:
| void | columnRolePatternChanged(const QRegExp &pattern) |
См. также columnRole и columnRoleReplace.
columnRoleReplace : QString
Это свойство содержит заменяемый контент, используемый совместно с columnRolePattern.
По умолчанию пустая строка. Для получения дополнительной информации о работе поиска и замены с использованием регулярных выражений, см. документацию функции QString::replace(const QRegExp &rx, const QString &after).
Функции доступа:
| QString | columnRoleReplace() const |
| void | setColumnRoleReplace(const QString &replace) |
Сигнал уведомления:
| void | columnRoleReplaceChanged(const QString &replace) |
См. также columnRole и columnRolePattern.
itemModel : QAbstractItemModel *
Это свойство содержит модель элементов.
Функции доступа:
| QAbstractItemModel * | itemModel() const |
| void | setItemModel(QAbstractItemModel *itemModel) |
Сигнал уведомления:
| void | itemModelChanged(const QAbstractItemModel *itemModel) |
multiMatchBehavior : MultiMatchBehavior
Как обрабатываются несколько совпадений для каждой комбинации строки/столбца.
По умолчанию QItemModelBarDataProxy::MMBLast. Выбранное поведение влияет как на значение бара, так и на поворот.
Например, у вас может быть модель элементов со временными данными, взятыми с нерегулярными интервалами, и вы хотите визуализировать общее значение элементов данных каждый день с помощью диаграммы столбцов. Это можно сделать, задав категории строк и столбцов, чтобы каждый столбец представлял день, и установив multiMatchBehavior в QItemModelBarDataProxy::MMBCumulative.
Функции доступа:
| MultiMatchBehavior | multiMatchBehavior() const |
| void | setMultiMatchBehavior(MultiMatchBehavior behavior) |
Сигнал уведомления:
| void | multiMatchBehaviorChanged(MultiMatchBehavior behavior) |
rotationRole : QString
Это свойство содержит роль поворота для сопоставления.
Функции доступа:
| QString | rotationRole() const |
| void | setRotationRole(const QString &role) |
Сигнал уведомления:
| void | rotationRoleChanged(const QString &role) |
rotationRolePattern : QRegExp
Это свойство указывает, выполняется ли поиск и замена на значении, сопоставленном роли поворота, прежде чем оно используется как угол поворота бара.
Это свойство задаёт регулярное выражение для поиска части значения, подлежащей замене, а свойство rotationRoleReplace содержит строку замены.
Функции доступа:
| QRegExp | rotationRolePattern() const |
| void | setRotationRolePattern(const QRegExp &pattern) |
Сигнал уведомления:
| void | rotationRolePatternChanged(const QRegExp &pattern) |
См. также rotationRole и rotationRoleReplace.
rotationRoleReplace : QString
Это свойство содержит заменяемое содержимое, которое используется совместно с rotationRolePattern.
По умолчанию пустая строка. Дополнительную информацию о работе поиска и замены с использованием регулярных выражений см. в документации функции QString::replace(const QRegExp &rx, const QString &after).
Функции доступа:
| QString | rotationRoleReplace() const |
| void | setRotationRoleReplace(const QString &replace) |
Сигнал уведомления:
| void | rotationRoleReplaceChanged(const QString &replace) |
См. также rotationRole и rotationRolePattern.
rowCategories : QStringList
Это свойство содержит категории строк для сопоставления.
Функции доступа:
| QStringList | rowCategories() const |
| void | setRowCategories(const QStringList &categories) |
Сигнал уведомления:
| void | rowCategoriesChanged() |
rowRole : QString
Это свойство содержит роль строки для сопоставления.
Функции доступа:
| QString | rowRole() const |
| void | setRowRole(const QString &role) |
Сигнал уведомления:
| void | rowRoleChanged(const QString &role) |
rowRolePattern : QRegExp
Это свойство указывает, выполняется ли поиск и замена на значении, сопоставленном с ролью строки, перед использованием его в качестве категории строки.
Это свойство определяет регулярное выражение для нахождения части сопоставленного значения, которое нужно заменить, а свойство rowRoleReplace содержит строку замены. Это полезно, например, при разборе категорий строк и столбцов из одного поля времени в модели элементов.
Функции доступа:
| QRegExp | rowRolePattern() const |
| void | setRowRolePattern(const QRegExp &pattern) |
Сигнал уведомления:
| void | rowRolePatternChanged(const QRegExp &pattern) |
См. также rowRole и rowRoleReplace.
rowRoleReplace : QString
Это свойство содержит заменяемое содержимое, которое используется совместно с rowRolePattern.
По умолчанию пустая строка. Дополнительную информацию о работе поиска и замены с использованием регулярных выражений см. в документации функции QString::replace(const QRegExp &rx, const QString &after).
Функции доступа:
| QString | rowRoleReplace() const |
| void | setRowRoleReplace(const QString &replace) |
Сигнал уведомления:
| void | rowRoleReplaceChanged(const QString &replace) |
См. также rowRole и rowRolePattern.
useModelCategories : bool
Это свойство указывает, используются ли роли и категории строк и столбцов для сопоставления.
При установке в true, сопоставление игнорирует роли и категории строк и столбцов и вместо этого использует строки и столбцы из модели. По умолчанию false.
Функции доступа:
| bool | useModelCategories() const |
| void | setUseModelCategories(bool enable) |
Сигнал уведомления:
| void | useModelCategoriesChanged(bool enable) |
valueRole : QString
Это свойство содержит роль значения для сопоставления.
Функции доступа:
| QString | valueRole() const |
| void | setValueRole(const QString &role) |
Сигнал уведомления:
| void | valueRoleChanged(const QString &role) |
valueRolePattern : QRegExp
Это свойство указывает, выполняется ли поиск и замена на значении, сопоставленном с ролью значения, перед использованием его в качестве значения столбца.
Это свойство определяет регулярное выражение для нахождения части сопоставленного значения, которое нужно заменить, а свойство valueRoleReplace содержит строку замены.
Функции доступа:
| QRegExp | valueRolePattern() const |
| void | setValueRolePattern(const QRegExp &pattern) |
Сигнал уведомления:
| void | valueRolePatternChanged(const QRegExp &pattern) |
См. также valueRole и valueRoleReplace.
valueRoleReplace : QString
Это свойство содержит заменяемое содержимое, которое используется совместно с valueRolePattern.
По умолчанию пустая строка. Дополнительную информацию о работе поиска и замены с использованием регулярных выражений см. в документации функции QString::replace(const QRegExp &rx, const QString &after).
Функции доступа:
| QString | valueRoleReplace() const |
| void | setValueRoleReplace(const QString &replace) |
Сигнал уведомления:
| void | valueRoleReplaceChanged(const QString &replace) |
См. также valueRole и valueRolePattern.
Документация по членам-функциям
QItemModelBarDataProxy::QItemModelBarDataProxy(QObject *parent = Q_NULLPTR)
Конструктор QItemModelBarDataProxy с необязательным параметром parent.
QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, QObject *parent = Q_NULLPTR)
Создаёт QItemModelBarDataProxy с itemModel и необязательным parent. Прокси не принимает во владение itemModel, так как обычно модели элементов принадлежат другим элементам управления.
QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &valueRole, QObject *parent = Q_NULLPTR)
Создаёт QItemModelBarDataProxy с itemModel и необязательным parent. Прокси не принимает во владение itemModel, так как обычно модели элементов принадлежат другим элементам управления. Роль значения установлена в valueRole. Этот конструктор предназначен для использования с моделями, данные которых уже правильно отсортированы по строкам и столбцам, поэтому он также устанавливает свойство useModelCategories в значение true.
QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, QObject *parent = Q_NULLPTR)
Создаёт QItemModelBarDataProxy с itemModel и необязательным parent. Прокси не принимает во владение itemModel, так как обычно модели элементов принадлежат другим элементам управления. Сопоставления ролей устанавливаются с помощью rowRole, columnRole и valueRole.
QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, QObject *parent = Q_NULLPTR)
Создаёт QItemModelBarDataProxy с itemModel и необязательным parent. Прокси не принимает во владение itemModel, так как обычно модели элементов принадлежат другим элементам управления. Сопоставления ролей устанавливаются с помощью rowRole, columnRole, valueRole и rotationRole.
QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = Q_NULLPTR)
Создаёт QItemModelBarDataProxy с itemModel и необязательным parent. Прокси не принимает во владение itemModel, так как обычно модели элементов принадлежат другим элементам управления. Сопоставления ролей устанавливаются с помощью rowRole, columnRole и valueRole. Категории строк и столбцов устанавливаются с помощью rowCategories и columnCategories. Этот конструктор также устанавливает autoRowCategories и autoColumnCategories в false.
QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = Q_NULLPTR)
Создаёт QItemModelBarDataProxy с itemModel и необязательным parent. Прокси не принимает во владение itemModel, так как обычно модели элементов принадлежат другим элементам управления. Сопоставления ролей устанавливаются с помощью rowRole, columnRole, valueRole и rotationRole. Категории строк и столбцов устанавливаются с помощью rowCategories и columnCategories. Этот конструктор также устанавливает autoRowCategories и autoColumnCategories в false.
[virtual] QItemModelBarDataProxy::~QItemModelBarDataProxy()
Уничтожает QItemModelBarDataProxy.
int QItemModelBarDataProxy::columnCategoryIndex(const QString &category)
Возвращает индекс указанной category в списке категорий столбцов. Если категория не найдена, возвращается -1.
Примечание: Если используется автоматическое создание категорий столбцов, этот метод не вернёт допустимый индекс до тех пор, пока данные модели не будут разрешены в первый раз.
void QItemModelBarDataProxy::remap(const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories)
Изменяет rowRole, columnRole, valueRole, rotationRole, rowCategories и columnCategories на указанное отображение.
int QItemModelBarDataProxy::rowCategoryIndex(const QString &category)
Возвращает индекс указанной category в списке категорий строк. Если список категорий строк пуст, возвращается -1.
Примечание: Если используется автоматическое создание категорий строк, этот метод не вернёт допустимый индекс до тех пор, пока данные модели не будут разрешены в первый раз.
void QItemModelBarDataProxy::setItemModel(QAbstractItemModel *itemModel)
Устанавливает модель элементов в itemModel. Не принимает во владение модель, но подключается к ней, чтобы прослушивать изменения.
Примечание: Функция-сеттер для свойства itemModel.
См. также itemModel().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qitemmodelbardataproxy.html