Класс Q3DBars
Класс Q3DBars предоставляет методы для отрисовки 3D столбчатых диаграмм. Подробнее...
| Заголовок: | #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) |
Подробное описание
Этот класс позволяет разработчикам отображать столбчатые диаграммы в 3D и просматривать их, свободно вращая сцену. Вращение выполняется удерживанием правой кнопки мыши и перемещением мыши. Масштабирование выполняется колесом мыши. Выбор, если он включен, выполняется левой кнопкой мыши. Сброс сцены до исходного вида камеры выполняется щелчком по колесу мыши. На сенсорных устройствах вращение выполняется путем касания и перемещения, выбор — касанием и удерживанием, а масштабирование — с помощью пинцета.
Если для Q3DBars явно не заданы оси, создаются временные стандартные оси без меток. Эти стандартные оси можно изменить с помощью аксессоров осей, но как только какая-либо ось явно задается для ориентации, стандартная ось для этой ориентации уничтожается.
Q3DBars поддерживает одновременное отображение более чем одной серии. Не обязательно, чтобы все серии имели одинаковое количество строк и столбцов. Метки строк и столбцов берутся из первой добавленной серии, если явно не определены для осей строк и столбцов.
END_OF_DOCUMENT_MARKERКак создать минимальную диаграмму 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++ Classes.
Property Documentation
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
Это свойство содержит выбранный ряд или значение null.
Если флаг SelectionMultiSeries установлен для 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().
Member Function Documentation
Q3DBars::Q3DBars(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)
Конструирует новый 3D столбчатый график с необязательным окном parent и поверхностным форматом.
[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 равно нулю, создается временная ось по умолчанию без меток. Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.
Примечание: Функция-сеттер для свойства columnAxis.
См. также columnAxis(), addAxis(), и releaseAxis().
void Q3DBars::setPrimarySeries(QBar3DSeries *series)
Устанавливает series как основной ряд графика. Основной ряд определяет метки оси строк и столбцов, когда метки не заданы явно на осях.
Если указанный ряд еще не добавлен в график, его установка в качестве основного ряда также неявно добавит его в график.
Если основной ряд удаляется из графика, это свойство сбрасывается по умолчанию.
Если series равно нулю, это свойство сбрасывается по умолчанию. По умолчанию устанавливается на первый добавленный ряд или ноль, если в график не добавлены ряды.
Примечание: Функция-сеттер для свойства primarySeries.
См. также primarySeries().
void Q3DBars::setRowAxis(QCategory3DAxis *axis)
Устанавливает ось активной строки в axis. Неявно вызывает addAxis() для передачи владения осью этому графику.
Если axis равно нулю, создается временная ось по умолчанию без меток. Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.
Примечание: Функция-сеттер для свойства rowAxis.
См. также rowAxis(), addAxis(), и releaseAxis().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/q3dbars.html