このページでは

Q3DScatter Class

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

ヘッダー: #include <Q3DScatter>
CMake: find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
qmake: QT += datavisualization
バージョン: QtDataVisualization 1.0
継承元: 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はレンダリング用のデータを受け入れる準備が整いました。3つのQVector3D 項目からなる1つのシリーズを追加します:

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

そして、この数行のコードによって次のような結果が得られます:

ワイヤーフレームのグリッドボックス内に3つの緑色の球が配置された、シンプルな3D散布図

シーンの回転やズームインが可能で、項目を選択してその位置を確認することもできますが、この最小限のコード例にはそれ以外のインタラクションは含まれていません。Scatter Graphなどの提供されている例を参照することで、さらに詳しく学ぶことができます。

関連項目: Q3DBars 、Q3DSurface 、および Qt 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*

このプロパティには、選択された系列、またはnullが格納されます。

アクセス関数:

QScatter3DSeries *selectedSeries() const

通知信号:

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

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.