Класс Q3DBars
Класс Q3DBars предоставляет методы для визуализации 3D столбчатых диаграмм. Подробнее...
| Заголовок: | #include <Q3DBars> |
| С тех пор: | QtDataVisualization 1.0 |
| Наследует: | QAbstract3DGraph |
Свойства
|
|
Открытые функции
| Q3DBars(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr) | |
| virtual | ~Q3DBars() |
| void | addAxis(QAbstract3DAxis *axis) |
| void | addSeries(QBar3DSeries *series) |
| QList<QAbstract3DAxis *> | axes() const |
| QSizeF | barSpacing() const |
| float | barThickness() const |
| QCategory3DAxis * | columnAxis() const |
| float | floorLevel() const |
| void | insertSeries(int index, QBar3DSeries *series) |
| bool | isBarSpacingRelative() const |
| bool | isMultiSeriesUniform() const |
| QBar3DSeries * | primarySeries() const |
| void | releaseAxis(QAbstract3DAxis *axis) |
| void | removeSeries(QBar3DSeries *series) |
| QCategory3DAxis * | rowAxis() const |
| QBar3DSeries * | selectedSeries() const |
| QList<QBar3DSeries *> | seriesList() const |
| void | setBarSpacing(const QSizeF &spacing) |
| void | setBarSpacingRelative(bool relative) |
| void | setBarThickness(float thicknessRatio) |
| void | setColumnAxis(QCategory3DAxis *axis) |
| void | setFloorLevel(float level) |
| void | setMultiSeriesUniform(bool uniform) |
| void | setPrimarySeries(QBar3DSeries *series) |
| void | setRowAxis(QCategory3DAxis *axis) |
| void | setValueAxis(QValue3DAxis *axis) |
| QValue3DAxis * | valueAxis() const |
Сигналы
| void | barSpacingChanged(const QSizeF &spacing) |
| void | barSpacingRelativeChanged(bool relative) |
| void | barThicknessChanged(float thicknessRatio) |
| void | columnAxisChanged(QCategory3DAxis *axis) |
| void | floorLevelChanged(float level) |
| void | multiSeriesUniformChanged(bool uniform) |
| void | primarySeriesChanged(QBar3DSeries *series) |
| void | rowAxisChanged(QCategory3DAxis *axis) |
| void | selectedSeriesChanged(QBar3DSeries *series) |
| void | valueAxisChanged(QValue3DAxis *axis) |
Подробное описание
Этот класс позволяет разработчикам визуализировать столбчатые диаграммы в 3D и просматривать их, свободно вращая сцену. Вращение выполняется удерживанием правой кнопки мыши и перемещением мыши. Масштабирование выполняется колесиком мыши. Выбор, если он включен, выполняется левой кнопкой мыши. Сброс сцены до исходного вида камеры можно выполнить, щелкнув колесиком мыши. В сенсорных устройствах вращение выполняется по касанию и перемещению, выбор — по касанию и удерживанию, а масштабирование — по масштабированию.
Если явным образом не заданы оси для Q3DBars, создаются временные стандартные оси без меток. Эти стандартные оси можно изменить с помощью аксессоров осей, но как только любая ось будет явно задана для ориентации, стандартная ось для этой ориентации будет уничтожена.
Q3DBars поддерживает одновременный вывод более одной серии. Не обязательно, чтобы все ряды имели одинаковое количество строк и столбцов. Метки строк и столбцов берутся из первой добавленной серии, если явно не определены оси строк и столбцов.
Как построить минимальную диаграмму Q3DBars
Сначала создайте экземпляр Q3DBars. Поскольку в этом примере диаграмма выполняется как главное окно, нам нужно очистить флаг Qt::FramelessWindowHint, который устанавливается по умолчанию:
Q3DBars bars; bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);
После создания Q3DBars вы можете задать окно данных, изменив диапазон по осям строк и столбцов. Это необязательно, так как окно данных по умолчанию отображает все данные в серии. Если объем данных велик, обычно предпочтительнее отображать только часть из них. В примере установим окно данных, чтобы отобразить первые пять строк и столбцов:
bars.rowAxis()->setRange(0, 4); bars.columnAxis()->setRange(0, 4);
Теперь Q3DBars готов принять данные для визуализации. Создайте серию с одной строкой из 5 значений:
QBar3DSeries *series = new QBar3DSeries; QBarDataRow *data = new QBarDataRow; *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f; series->dataProxy()->addRow(data); bars.addSeries(series);
Примечание: Мы установили окно данных в 5 x 5, но добавляем только одну строку данных. Это нормально, остальные строки будут пустыми.
Наконец, вам нужно сделать его видимым:
bars.show();
Полный код, необходимый для создания и отображения этой диаграммы:
#include <QtDataVisualization>
int main(int argc, char **argv)
{
qputenv("QSG_RHI_BACKEND", "opengl");
QGuiApplication app(argc, argv);
Q3DBars bars;
bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);
bars.rowAxis()->setRange(0, 4);
bars.columnAxis()->setRange(0, 4);
QBar3DSeries *series = new QBar3DSeries;
QBarDataRow *data = new QBarDataRow;
*data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
series->dataProxy()->addRow(data);
bars.addSeries(series);
bars.show();
return app.exec();
} И вот что эти несколько строк кода производят:
Сцену можно вращать, увеличивать и выбирать полосу для просмотра её значения, но в этом минимальном примере кода нет других взаимодействий. Вы можете узнать больше, ознакомившись с приведёнными примерами, например, с Примером полос.
См. также Q3DScatter, Q3DSurface и Qt Data Visualization C++ Classes.
Краткое описание свойств
barSpacing : QSizeF
Расстояние между полосами по осям X и Z.
По умолчанию установлено значение (1.0, 1.0). Расстояние зависит от свойства barSpacingRelative.
Функции доступа:
| QSizeF | barSpacing() const |
| void | setBarSpacing(const QSizeF &spacing) |
Сигнал уведомления:
| void | barSpacingChanged(const QSizeF &spacing) |
См. также barSpacingRelative и multiSeriesUniform.
barSpacingRelative : bool
Это свойство определяет, является ли расстояние абсолютным или относительным к толщине полосы.
Если оно true, значение 0.0 означает, что полосы расположены бок о бок, 1.0 означает, что между полосами оставляется промежуток шириной, равной толщине одной полосы, и так далее. По умолчанию установлено значение true.
Функции доступа:
| bool | isBarSpacingRelative() const |
| void | setBarSpacingRelative(bool relative) |
Сигнал уведомления:
| void | barSpacingRelativeChanged(bool relative) |
barThickness : float
Это свойство хранит коэффициент толщины полосы между измерениями X и Z.
Значение 1.0 означает, что полосы имеют одинаковую ширину и глубину, тогда как 0.5 делает их вдвое глубже, чем шире. По умолчанию установлено значение 1.0.
Функции доступа:
| float | barThickness() const |
| void | setBarThickness(float thicknessRatio) |
Сигнал уведомления:
| void | barThicknessChanged(float thicknessRatio) |
columnAxis : QCategory3DAxis*
Это свойство хранит ось, прикреплённую к активному столбцу.
Функции доступа:
| QCategory3DAxis * | columnAxis() const |
| void | setColumnAxis(QCategory3DAxis *axis) |
Сигнал уведомления:
| void | columnAxisChanged(QCategory3DAxis *axis) |
floorLevel : float
Это свойство хранит уровень пола для гистограммы в координатах данных оси Y.
Фактический уровень пола будет ограничен минимальными и максимальными значениями оси Y. По умолчанию равен нулю.
Функции доступа:
| float | floorLevel() const |
| void | setFloorLevel(float level) |
Сигнал уведомления:
| void | floorLevelChanged(float level) |
multiSeriesUniform : bool
Это свойство определяет, должны ли полосы масштабироваться с пропорциями, установленными для полосы одного ряда, даже если отображается несколько рядов.
Если установлено значение true, расстояние между полосами будет корректно применено только к оси X. По умолчанию установлено значение false.
Функции доступа:
| bool | isMultiSeriesUniform() const |
| void | setMultiSeriesUniform(bool uniform) |
Сигнал уведомления:
| void | multiSeriesUniformChanged(bool uniform) |
primarySeries : QBar3DSeries*
Это свойство хранит основной ряд графика.
Функции доступа:
| QBar3DSeries * | primarySeries() const |
| void | setPrimarySeries(QBar3DSeries *series) |
Сигнал уведомления:
| void | primarySeriesChanged(QBar3DSeries *series) |
rowAxis : QCategory3DAxis*
Это свойство хранит ось, прикреплённую к активной строке.
Функции доступа:
| QCategory3DAxis * | rowAxis() const |
| void | setRowAxis(QCategory3DAxis *axis) |
Сигнал уведомления:
| void | rowAxisChanged(QCategory3DAxis *axis) |
[read-only] selectedSeries : QBar3DSeries* const
Это свойство хранит выбранный ряд или значение null.
Если selectionMode имеет установленный флаг SelectionMultiSeries, это свойство хранит ряд, которому принадлежит выбранная полоса.
Функции доступа:
| QBar3DSeries * | selectedSeries() const |
Сигнал уведомления:
| void | selectedSeriesChanged(QBar3DSeries *series) |
valueAxis : QValue3DAxis*
Устанавливает активную ось значений (ось Y) в axis. Неявным образом вызывает addAxis() для передачи права владения axis этому графику.
Если axis имеет значение null, создаётся временная ось по умолчанию без меток и с автоматически настраиваемым диапазоном. Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.
Функции доступа:
| QValue3DAxis * | valueAxis() const |
| void | setValueAxis(QValue3DAxis *axis) |
Сигнал уведомления:
| void | valueAxisChanged(QValue3DAxis *axis) |
См. также addAxis() и releaseAxis().
Описание функций-членов
Q3DBars::Q3DBars(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)
Создаёт новый трёхмерный столбчатый график с необязательным окном parent и поверхностью format.
[virtual] Q3DBars::~Q3DBars()
Уничтожает трёхмерный столбчатый график.
void Q3DBars::addAxis(QAbstract3DAxis *axis)
Добавляет axis к графику. Оси, добавленные с помощью addAxis, ещё не используются, addAxis просто передает владение axis графику. axis не должен быть null или добавлен к другому графику.
См. также releaseAxis(), setValueAxis(), setRowAxis() и setColumnAxis().
void Q3DBars::addSeries(QBar3DSeries *series)
Добавляет series к графику. График может содержать несколько рядов, но только один набор осей, поэтому строки и столбцы всех рядов должны совпадать для осмысленности визуализируемых данных. Если у графика несколько видимых рядов, только основной ряд будет генерировать метки строк или столбцов на осях в случаях, когда метки не заданы явно для осей. Если только что добавленный ряд указал выбранную колонку, она будет выделена, а любая существующая выделение будет очищена. Только один добавленный ряд может иметь активное выделение.
См. также seriesList() и primarySeries.
QList<QAbstract3DAxis *> Q3DBars::axes() const
Возвращает список всех добавленных осей.
См. также addAxis().
void Q3DBars::insertSeries(int index, QBar3DSeries *series)
Вставляет series в позицию index в списке рядов. Если series уже добавлен в список, он перемещается в новую index.
Примечание: При перемещении ряда в новую index, которая находится после его старой индекса, новая позиция в списке рассчитывается так, как если бы ряд все еще находился в своей старой индексе, поэтому конечный индекс фактически является index, уменьшенным на единицу.
См. также addSeries() и seriesList().
void Q3DBars::releaseAxis(QAbstract3DAxis *axis)
Возвращает владение axis обратно вызывающему объекту, если он добавлен к этому графику. Если высвобожденная axis используется, будет создана и активирована новая ось по умолчанию.
Если ось по умолчанию высвобождена и добавлена позже, она ведет себя как любая другая ось.
См. также addAxis(), setValueAxis(), setRowAxis() и setColumnAxis().
void Q3DBars::removeSeries(QBar3DSeries *series)
Удаляет series из графика.
QList<QBar3DSeries *> Q3DBars::seriesList() const
Возвращает список рядов, добавленных к этому графику.
void Q3DBars::setColumnAxis(QCategory3DAxis *axis)
Устанавливает ось активного столбца в axis. Неявно вызывает addAxis() для передачи владения осью этому графику.
Если axis равен null, создается временная ось по умолчанию без меток. Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.
Примечание: Функция-сеттер для свойства columnAxis.
См. также columnAxis(), addAxis() и releaseAxis().
void Q3DBars::setPrimarySeries(QBar3DSeries *series)
Устанавливает series в качестве основного ряда графика. Основной ряд определяет метки оси строк и столбцов, когда метки не заданы явно для осей.
Если указанный ряд еще не добавлен в график, его установка в качестве основного ряда также неявно добавит его в график.
Если основной ряд сам удаляется из графика, это свойство сбрасывается по умолчанию.
Если series равен null, это свойство сбрасывается по умолчанию. По умолчанию устанавливается на первый добавленный ряд или ноль, если в график не добавлены никакие ряды.
Примечание: Функция-сеттер для свойства primarySeries.
См. также primarySeries().
void Q3DBars::setRowAxis(QCategory3DAxis *axis)
Устанавливает ось активной строки в axis. Неявно вызывает addAxis() для передачи владения осью этому графику.
Если axis равен null, создается временная ось по умолчанию без меток. Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.
Примечание: Функция-сеттер для свойства rowAxis.
См. также rowAxis(), addAxis() и releaseAxis().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/q3dbars.html