Spec-Zone.ru › Qt 5.11

Класс Q3DSurface

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

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

Свойства

  • axisX : QValue3DAxis*
  • axisY : QValue3DAxis*
  • axisZ : QValue3DAxis*
  • flipHorizontalGrid : bool
  • selectedSeries : QSurface3DSeries* const
  • 19 свойств унаследовано от QAbstract3DGraph
  • 16 свойств унаследовано от QWindow
  • 1 свойство унаследовано от QObject

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

Q3DSurface(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)
virtual ~Q3DSurface()
void addAxis(QValue3DAxis *axis)
void addSeries(QSurface3DSeries *series)
QList<QValue3DAxis *> axes() const
QValue3DAxis * axisX() const
QValue3DAxis * axisY() const
QValue3DAxis * axisZ() const
bool flipHorizontalGrid() const
void releaseAxis(QValue3DAxis *axis)
void removeSeries(QSurface3DSeries *series)
QSurface3DSeries * selectedSeries() const
QList<QSurface3DSeries *> seriesList() const
void setAxisX(QValue3DAxis *axis)
void setAxisY(QValue3DAxis *axis)
void setAxisZ(QValue3DAxis *axis)
void setFlipHorizontalGrid(bool flip)
  • 54 открытых функций унаследовано от QAbstract3DGraph
  • 85 открытых функций унаследовано от QWindow
  • 145 открытых функций унаследовано от QOpenGLFunctions
  • 34 открытых функций унаследовано от QObject
  • 6 открытых функций унаследовано от QSurface

Сигналы

void axisXChanged(QValue3DAxis *axis)
void axisYChanged(QValue3DAxis *axis)
void axisZChanged(QValue3DAxis *axis)
void flipHorizontalGridChanged(bool flip)
void selectedSeriesChanged(QSurface3DSeries *series)
  • 18 сигналов унаследовано от QAbstract3DGraph
  • 18 сигналов унаследовано от QWindow
  • 2 сигнала унаследовано от QObject

Дополнительные унаследованные члены

  • 24 открытых слотов унаследовано от QWindow
  • 1 открытый слот унаследовано от QObject
  • 1 открытая переменная унаследовано от QWindow
  • 1 открытая переменная унаследовано от QObject
  • 3 статические открытые члены унаследовано от QWindow
  • 10 статических открытых членов унаследовано от QObject
  • 18 защищенных функций унаследовано от QWindow
  • 9 защищенных функций унаследовано от QObject
  • 1 защищенный тип унаследовано от QOpenGLFunctions
  • 2 защищенных переменных унаследовано от QObject
  • 2 защищенных переменных унаследовано от QSurface

Подробное описание

Класс Q3DSurface предоставляет методы для отрисовки 3D поверхностей графиков.

Этот класс позволяет разработчикам отрисовывать 3D поверхности графиков и просматривать их, вращая сцену свободно. Визуальные свойства поверхности, такие как режим отрисовки и затенение, могут быть контролируемы через QSurface3DSeries.

Класс Q3DSurface поддерживает выделение, отображая выделенную точку на данных, где пользователь щелкнул левой кнопкой мыши (при использовании обработчика ввода по умолчанию) или выделен через QSurface3DSeries. Указатель выделения сопровождается меткой, которая по умолчанию отображает значение точки данных и координаты точки.

Диапазон значений и формат метки, отображаемые на оси, могут быть контролируемы через QValue3DAxis.

Для вращения графика удерживайте правую кнопку мыши и перемещайте курсор. Масштабирование выполняется с помощью колесика мыши. Оба метода предполагают использование обработчика ввода по умолчанию.

Если оси не заданы явно для Q3DSurface, создаются временные оси по умолчанию без меток. Эти оси по умолчанию можно изменить с помощью аксессоров осей, но как только любая ось задана явно для ориентации, ось по умолчанию для этой ориентации уничтожается.

Как построить минимальный график Q3DSurface

Сначала создайте Q3DSurface. Поскольку в этом примере график запускается как окно верхнего уровня, нам нужно очистить флаг Qt::FramelessWindowHint, который устанавливается по умолчанию:

Q3DSurface surface;
surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint);

Теперь Q3DSurface готов принять данные для отрисовки. Создайте элементы данных для получения значений:

QSurfaceDataArray *data = new QSurfaceDataArray;
QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;
QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;

Сначала передайте данные элементам строки, а затем добавьте указатели на элементы данных:

*dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);
*dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);
*data << dataRow1 << dataRow2;

Создайте новую серию и задайте для нее данные:

QSurface3DSeries *series = new QSurface3DSeries;
series->dataProxy()->resetArray(data);
surface.addSeries(series);

Наконец, вам нужно установить ее видимость:

surface.show();

Полный код, необходимый для создания и отображения этого графика:

#include <QtDataVisualization>

using namespace QtDataVisualization;

int main(int argc, char **argv)
{
    QGuiApplication app(argc, argv);

    Q3DSurface surface;
    surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint);
    QSurfaceDataArray *data = new QSurfaceDataArray;
    QSurfaceDataRow *dataRow1 = new QSurfaceDataRow;
    QSurfaceDataRow *dataRow2 = new QSurfaceDataRow;

    *dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);
    *dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);
    *data << dataRow1 << dataRow2;

    QSurface3DSeries *series = new QSurface3DSeries;
    series->dataProxy()->resetArray(data);
    surface.addSeries(series);
    surface.show();

    return app.exec();
}

И вот что эти несколько строк кода производят:

Сцену можно вращать, приближать и выбирать точку поверхности для просмотра её координат, но никакие другие взаимодействия не включены в этот минимальный пример кода. Вы можете узнать больше, ознакомившись с примерами, такими как Пример поверхности.

См. также Q3DBars, Q3DScatter и 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)

flipHorizontalGrid : bool

Это свойство определяет, отображается ли сетка по горизонтали сверху графика, а не снизу.

В некоторых случаях сетка по горизонтали может быть в основном скрыта поверхностью, поэтому может быть полезнее отображать ее сверху графика, а не снизу. Типичный пример — отображение 2D спектrogram с использованием ортогональной проекции с верхним видом.

Если false, сетка и метки по горизонтали отображаются на горизонтальном фоне графика. Если true, сетка и метки по горизонтали отображаются на противоположной стороне графика от горизонтального фона. По умолчанию false.

Это свойство было введено в QtDataVisualization 1.2.

Функции доступа:

bool flipHorizontalGrid() const
void setFlipHorizontalGrid(bool flip)

Сигнал уведомления:

void flipHorizontalGridChanged(bool flip)

selectedSeries : QSurface3DSeries* const

Это свойство содержит выбранный ряд или null.

Если selectionMode имеет SelectionMultiSeries значение, это свойство содержит ряд, которому принадлежит выбранная точка.

Функции доступа:

QSurface3DSeries * selectedSeries() const

Сигнал уведомления:

void selectedSeriesChanged(QSurface3DSeries *series)

Документация функций-членов

Q3DSurface::Q3DSurface(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)

Создает новый график 3D поверхности с необязательным окном parent и форматом поверхности format.

[virtual] Q3DSurface::~Q3DSurface()

Удаляет график 3D поверхности.

void Q3DSurface::addAxis(QValue3DAxis *axis)

Добавляет axis к графику. Оси, добавленные с помощью addAxis, пока не используются, addAxis просто используется для передачи владения axis графику. axis не должен быть нулевым или добавленным к другому графику.

См. также releaseAxis(), setAxisX(), setAxisY() и setAxisZ().

void Q3DSurface::addSeries(QSurface3DSeries *series)

Добавляет series к графику. График может содержать несколько рядов, но имеет только один набор осей. Если добавленный ряд имеет указанный выбранный элемент, он будет выделен, а любой существующий выбор будет очищен. Только один добавленный ряд может иметь активный выбор.

QList<QValue3DAxis *> Q3DSurface::axes() const

Возвращает список всех добавленных осей.

См. также addAxis().

void Q3DSurface::releaseAxis(QValue3DAxis *axis)

Возвращает владение axis обратно вызывающей стороне, если он добавлен к этому графику. Если освобожденная axis используется, будет создана и активирована новая ось по умолчанию.

Если ось по умолчанию освобождена и добавлена позже, она ведет себя как любая другая ось.

См. также addAxis(), setAxisX(), setAxisY() и setAxisZ().

void Q3DSurface::removeSeries(QSurface3DSeries *series)

Удаляет series из графика.

QList<QSurface3DSeries *> Q3DSurface::seriesList() const

Возвращает список рядов, добавленных к этому графику.

void Q3DSurface::setAxisX(QValue3DAxis *axis)

Устанавливает axis как активную ось X. Неявно вызывает addAxis() для передачи владения осью этому графику.

Если axis равно null, создается временная ось по умолчанию без меток и с автоматически настраиваемым диапазоном.

Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.

Примечание: Функция-установщик для свойства axisX.

См. также axisX(), addAxis() и releaseAxis().

void Q3DSurface::setAxisY(QValue3DAxis *axis)

Устанавливает axis как активную ось Y. Неявно вызывает addAxis() для передачи владения осью этому графику.

Если axis равно null, создается временная ось по умолчанию без меток и с автоматически настраиваемым диапазоном.

Эта временная ось уничтожается, если другая ось явно устанавливается для той же ориентации.

Примечание: Функция-установщик для свойства axisY.

См. также axisY(), addAxis() и releaseAxis().

void Q3DSurface::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/archives/qt-5.11/q3dsurface.html

Spec-Zone.ru

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