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