Класс Q3DBars
Класс Q3DBars предоставляет методы для отрисовки 3D столбиковых графиков. Подробнее...
| Заголовок: | #include <Q3DBars> |
| С тех пор: | QtDataVisualization 1.0 |
| Наследует: | QAbstract3DGraph |
Свойства
|
|
- 19 свойств унаследовано от QAbstract3DGraph
- 16 свойств унаследовано от QWindow
- 1 свойство унаследовано от QObject
Открытые функции
| Q3DBars(const QSurfaceFormat *format = Q_NULLPTR, QWindow *parent = Q_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 |
- 54 общедоступных функций, унаследованных от QAbstract3DGraph
- 80 общедоступных функций, унаследованных от QWindow
- 145 общедоступных функций, унаследованных от QOpenGLFunctions
- 32 общедоступных функций, унаследованных от QObject
- 6 общедоступных функций, унаследованных от QSurface
Сигналы
| 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) |
- 18 сигналов, унаследованных от QAbstract3DGraph
- 18 сигналов, унаследованных от QWindow
- 2 сигналов, унаследованных от QObject
Дополнительные унаследованные члены
- 22 слотов, унаследованных от QWindow
- 1 слот, унаследованный от QObject
- 1 статический общедоступный член, унаследованный от QWindow
- 11 статических общедоступных членов, унаследованных от QObject
- 18 защищенных функций, унаследованных от QWindow
- 9 защищенных функций, унаследованных от QObject
Подробное описание
Класс Q3DBars предоставляет методы для рендеринга 3D столбчатых графиков.
Этот класс позволяет разработчикам отображать столбчатые диаграммы в 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);
Примечание: Мы установили окно данных в 5x5, но добавляем только одну строку данных. Это нормально, остальные строки будут пустыми.
Наконец, вам нужно сделать его видимым:
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++.
Документация свойств
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, интервал столбцов barSpacing будет корректно применён только к оси 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
Это свойство содержит выбранный ряд или значение null.
Если флаг selectionMode установлен, это свойство содержит ряд, к которому принадлежит выделенный столбец.
Функции доступа:
| 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 = Q_NULLPTR, QWindow *parent = Q_NULLPTR)
Создаёт новый график 3D столбцов с необязательным родительским окном parent и форматом поверхности format.
[virtual] Q3DBars::~Q3DBars()
Уничтожает график 3D столбцов.
void Q3DBars::addAxis(QAbstract3DAxis *axis)
Добавляет axis к графику. Оси, добавленные с помощью addAxis, ещё не используются; addAxis просто используется для передачи владения axis графику. axis не должен быть null или добавлен к другому графику.
См. также releaseAxis(), setValueAxis(), setRowAxis(), и setColumnAxis().
void Q3DBars::addSeries(QBar3DSeries *series)
Добавляет series в график. График может содержать несколько рядов, но только один набор осей, поэтому строки и столбцы всех рядов должны совпадать, чтобы визуализированные данные имели смысл. Если график содержит несколько видимых рядов, только основной ряд будет генерировать метки строк или столбцов на осях в тех случаях, когда метки не заданы явно для осей. Если только что добавленный ряд указал выделенный столбец, он будет выделен, а любое существующее выделение будет очищено. Только один добавленный ряд может иметь активное выделение.
/sa 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.9/q3dbars.html