Q3DScatter Class

Q3DScatterクラスは、3D散布図を描画するためのメソッドを提供します。詳細...

Header: #include <Q3DScatter>
CMake: find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
qmake: QT += datavisualization
Since: QtDataVisualization 1.0
Inherits: QAbstract3DGraph

プロパティ

パブリック関数

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はレンダリングするデータを受け取る準備ができた。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);

最後に、visibleに設定する必要がある:

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();
}

この数行のコードから、このようなものが生成される:

シーンを回転させたり、ズームインさせたり、アイテムを選択してその位置を表示させたりすることはできるが、この最小限のコード例には他のインタラクションは含まれていない。散布図など、提供されているサンプルに慣れることで、より多くを学ぶことができる。

Q3DBarsQ3DSurfaceQt Data Visualization C++ Classesも参照してください

プロパティの説明

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)

[read-only] selectedSeries : QScatter3DSeries* const

このプロパティは、選択されたシリーズまたはNULLを保持します。

アクセス関数

QScatter3DSeries *selectedSeries() const

このプロパティは、選択された系列または NULL を保持します:

void selectedSeriesChanged(QScatter3DSeries *series)

メンバ関数ドキュメント

[explicit] Q3DScatter::Q3DScatter(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)

オプションでparent ウィンドウと表面format を持つ新しい 3D 散布図グラフを構築します。

[virtual noexcept] Q3DScatter::~Q3DScatter()

3D 散布図グラフを破棄します。

void Q3DScatter::addAxis(QValue3DAxis *axis)

グラフにaxis を追加します。addAxisによって追加された軸はまだ使用されていません。addAxisは単にaxis の所有権をグラフに与えるために使用されます。axis が null であったり、他のグラフに追加されていたりしてはいけません。

releaseAxis(),setAxisX(),setAxisY(),setAxisZ()も参照

void Q3DScatter::addSeries(QScatter3DSeries *series)

series をグラフに追加します。グラフは複数の系列を含むことができるが、軸は1セットのみである。新しく追加された系列に選択項目が指定されている場合、その項目は強調表示され、既存の選択項目はクリアされる。アクティブな選択項目を持つことができるのは、追加された1つの系列だけである。

QAbstract3DGraph::hasSeries()も参照

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 を削除します。

QAbstract3DGraph::hasSeries() も参照して ください。

QList<QScatter3DSeries *> Q3DScatter::seriesList() const

このグラフに追加された系列のリストを返します。

QAbstract3DGraph::hasSeries() も参照して ください。

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()も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。