Класс 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 график рассеяния с необязательным родительским окном и форматом поверхности 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.15/q3dscatter.html