Spec-Zone.ru › Qt

Класс Q3DBars

Класс Q3DBars предоставляет методы для отрисовки 3D столбчатых диаграмм. Подробнее...

Заголовок: #include <Q3DBars>
С тех пор: QtDataVisualization 1.0
Наследует: QAbstract3DGraph
  • Список всех членов, включая наследуемые

Свойства

  • barSpacing : QSizeF
  • barSpacingRelative : bool
  • barThickness : float
  • columnAxis : QCategory3DAxis*
  • floorLevel : float
  • multiSeriesUniform : bool
  • primarySeries : QBar3DSeries*
  • rowAxis : QCategory3DAxis*
  • selectedSeries : QBar3DSeries* const
  • valueAxis : QValue3DAxis*

Открытые функции

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)

Создаёт новый 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-6.2/q3dbars.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API