Класс Q3DScatter
Класс Q3DScatter предоставляет методы для отрисовки 3D диаграмм рассеяния. Подробнее...
| Заголовок: | #include <Q3DScatter> |
| С момента: | QtDataVisualization 1.0 |
| Наследует: | QAbstract3DGraph |
Свойства
- axisX : QValue3DAxis*
- axisY : QValue3DAxis*
- axisZ : QValue3DAxis*
- selectedSeries : QScatter3DSeries* const
Открытые функции
| Q3DScatter(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr) | |
| virtual | ~Q3DScatter() |
| void | addAxis(QValue3DAxis *axis) |
| void | addSeries(QScatter3DSeries *series) |
| QList<QValue3DAxis *> | axes() const |
| QValue3DAxis * | axisX() const |
| QValue3DAxis * | axisY() const |
| QValue3DAxis * | axisZ() const |
| void | releaseAxis(QValue3DAxis *axis) |
| void | removeSeries(QScatter3DSeries *series) |
| QScatter3DSeries * | selectedSeries() const |
| QList<QScatter3DSeries *> | seriesList() const |
| void | setAxisX(QValue3DAxis *axis) |
| void | setAxisY(QValue3DAxis *axis) |
| void | setAxisZ(QValue3DAxis *axis) |
Сигналы
| void | axisXChanged(QValue3DAxis *axis) |
| void | axisYChanged(QValue3DAxis *axis) |
| void | axisZChanged(QValue3DAxis *axis) |
| void | selectedSeriesChanged(QScatter3DSeries *series) |
Подробное описание
Этот класс позволяет разработчикам отрисовывать диаграммы рассеяния в 3D и просматривать их, свободно вращая сцену. Вращение выполняется удерживанием правой кнопки мыши и перемещением курсора. Масштабирование выполняется колесом мыши. Выбор, если он включен, выполняется левой кнопкой мыши. Сцена может быть сброшена к стандартному виду камеры, нажав колесо мыши. В сенсорных устройствах вращение выполняется с помощью нажатия и перемещения, выбор с помощью нажатия и удерживания, а масштабирование — с помощью пинцета.
Если для Q3DScatter явно не заданы оси, создаются временные стандартные оси без меток. Эти стандартные оси могут быть изменены с помощью аксессоров осей, но как только любая ось будет явно задана для ориентации, стандартная ось для этой ориентации будет уничтожена.
Q3DScatter поддерживает отображение более одного ряда одновременно.
Как создать минимальную 3D-диаграмму рассеяния Q3DScatter
Сначала создайте Q3DScatter. Поскольку мы запускаем график в качестве верхнего окна в этом примере, нам нужно сбросить флаг Qt::FramelessWindowHint, который устанавливается по умолчанию:
Q3DScatter scatter; scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);
Теперь Q3DScatter готов принять данные для отрисовки. Добавьте один ряд из 3 элементов QVector3D:
QScatter3DSeries *series = new QScatter3DSeries; QScatterDataArray data; data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f); series->dataProxy()->addItems(data); scatter.addSeries(series);
Наконец, вам нужно сделать его видимым:
scatter.show();
Полный код, необходимый для создания и отображения этой диаграммы:
#include <QtDataVisualization>
int main(int argc, char **argv)
{
qputenv("QSG_RHI_BACKEND", "opengl");
QGuiApplication app(argc, argv);
Q3DScatter scatter;
scatter.setFlags(scatter.flags() ^ Qt::FramelessWindowHint);
QScatter3DSeries *series = new QScatter3DSeries;
QScatterDataArray data;
data << QVector3D(0.5f, 0.5f, 0.5f) << QVector3D(-0.3f, -0.5f, -0.4f) << QVector3D(0.0f, -0.3f, 0.2f);
series->dataProxy()->addItems(data);
scatter.addSeries(series);
scatter.show();
return app.exec();
} И вот что производят эти несколько строк кода:
Сцена может быть повернута, приближена, а элемент можно выбрать, чтобы просмотреть его положение, но никакие другие взаимодействия не включены в этот минимальный пример кода. Вы можете узнать больше, ознакомившись с предоставленными примерами, такими как Пример Диаграммы Рассеяния.
См. также Q3DBars, Q3DSurface и Классы Qt Data Visualization на C++.
Документация по свойству
axisX : QValue3DAxis*
Это свойство содержит активную ось X.
Функции доступа:
| QValue3DAxis * | axisX() const |
| void | setAxisX(QValue3DAxis *axis) |
Сигнал уведомления:
| void | axisXChanged(QValue3DAxis *axis) |
axisY : QValue3DAxis*
Это свойство содержит активную ось Y.
Функции доступа:
| QValue3DAxis * | axisY() const |
| void | setAxisY(QValue3DAxis *axis) |
Сигнал уведомления:
| void | axisYChanged(QValue3DAxis *axis) |
axisZ : QValue3DAxis*
Это свойство содержит активную ось Z.
Функции доступа:
| QValue3DAxis * | axisZ() const |
| void | setAxisZ(QValue3DAxis *axis) |
Сигнал уведомления:
| void | axisZChanged(QValue3DAxis *axis) |
selectedSeries : QScatter3DSeries* const
Это свойство содержит выбранный ряд или null.
Функции доступа:
| QScatter3DSeries * | selectedSeries() const |
Сигнал уведомления:
| void | selectedSeriesChanged(QScatter3DSeries *series) |
Документация по методам члена
Q3DScatter::Q3DScatter(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)
Конструирует новую 3D диаграмму рассеяния с необязательным окном parent и форматом поверхности format.
Q3DScatter::~Q3DScatter()
Уничтожает 3D диаграмму рассеяния.
void Q3DScatter::addAxis(QValue3DAxis *axis)
Добавляет axis к графику. Оси, добавленные с помощью addAxis, еще не используются, addAxis просто используется для передачи владения axis графику. axis не должен быть null или добавлен к другому графику.
См. также releaseAxis(), setAxisX(), setAxisY() и setAxisZ().
void Q3DScatter::addSeries(QScatter3DSeries *series)
Добавляет series на график. График может содержать несколько рядов, но имеет только один набор осей. Если вновь добавленный ряд указал выделенный элемент, он будет выделен, а любое существующее выделение будет очищено. Только один добавленный ряд может иметь активное выделение.
QList<QValue3DAxis *> Q3DScatter::axes() const
Возвращает список всех добавленных осей.
См. также addAxis().
QValue3DAxis *Q3DScatter::axisZ() const
Возвращает используемую ось Z.
Примечание: Функция-геттер для свойства axisZ.
См. также setAxisZ().
void Q3DScatter::releaseAxis(QValue3DAxis *axis)
Освобождает владение осью axis обратно вызывающей стороне, если она добавлена к этому графику. Если освобождённая ось axis используется, будет создана и активирована новая ось по умолчанию.
Если ось по умолчанию освобождена и добавлена обратно позже, она ведёт себя как любая другая ось.
См. также addAxis(), setAxisX(), setAxisY() и setAxisZ().
void Q3DScatter::removeSeries(QScatter3DSeries *series)
Удаляет series с графика.
QList<QScatter3DSeries *> Q3DScatter::seriesList() const
Возвращает список рядов, добавленных к этому графику.
void Q3DScatter::setAxisX(QValue3DAxis *axis)
Устанавливает axis как активную ось X. Неявно вызывает addAxis() для передачи владения осью этому графику.
Если axis равно null, создаётся временная ось по умолчанию без меток и с автоматически настраиваемым диапазоном. Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.
Примечание: Функция-сеттер для свойства axisX.
См. также axisX(), addAxis() и releaseAxis().
void Q3DScatter::setAxisY(QValue3DAxis *axis)
Устанавливает axis как активную ось Y. Неявно вызывает addAxis() для передачи владения осью этому графику.
Если axis равно null, создаётся временная ось по умолчанию без меток и с автоматически настраиваемым диапазоном. Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.
Примечание: Функция-сеттер для свойства axisY.
См. также axisY(), addAxis() и releaseAxis().
void Q3DScatter::setAxisZ(QValue3DAxis *axis)
Устанавливает axis как активную ось Z. Неявно вызывает addAxis() для передачи владения осью этому графику.
Если axis равно null, создаётся временная ось по умолчанию без меток и с автоматически настраиваемым диапазоном. Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.
Примечание: Функция-сеттер для свойства axisZ.
См. также axisZ(), addAxis() и releaseAxis().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/q3dscatter.html