Класс Q3DBars
Класс Q3DBars предоставляет методы для отрисовки трёхмерных гистограмм. Подробнее...
| Заголовок: | #include <Q3DBars> |
| С версии: | QtDataVisualization 1.0 |
| Наследует: | QAbstract3DGraph |
Этот класс был введен в QtDataVisualization 1.0.
Свойства
|
|
Открытые функции
| 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) |
Подробное описание
Этот класс позволяет разработчикам создавать трёхмерные гистограммы и просматривать их, свободно вращая сцену. Вращение осуществляется удерживанием правой кнопки мыши и перемещением мыши. Масштабирование осуществляется колесом мыши. Выбор, если включен, осуществляется левой кнопкой мыши. Сцену можно сбросить в стандартный вид камеры, щелкнув колесом мыши. На сенсорных устройствах вращение осуществляется касанием и перемещением, выбор — касанием и удержанием, а масштабирование — сжатием.
Если оси не установлены в 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>
using namespace QtDataVisualization;
int main(int argc, char **argv)
{
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) |
selectedSeries : QBar3DSeries* const
Это свойство содержит выбранную серию или нулевое значение.
Если для 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)
Создает новый 3D столбчатый график с необязательным окном parent и format поверхности.
[virtual] Q3DBars::~Q3DBars()
Уничтожает 3D столбчатый график.
void Q3DBars::addAxis(QAbstract3DAxis *axis)
Добавляет axis к графику. Оси, добавленные с помощью addAxis, пока не используются, addAxis просто используется для передачи владения axis графику. axis не должен быть нулевым или добавленным к другому графику.
См. также 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-5.14/q3dbars.html