Q3DScatterWidgetItem Class

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

Header: #include <Q3DScatterWidgetItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmake: QT += graphs
Inherits: Q3DGraphsWidgetItem

プロパティ

パブリック関数

Q3DScatterWidgetItem(QObject *parent = nullptr)
virtual ~Q3DScatterWidgetItem() override
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散布図グラフをレンダリングし、シーンを自由に回転させて見ることを可能にします。回転はマウスの右ボタンを押しながらマウスを動かすことで行い、ズームはマウスホイールを使って行います。有効な場合、選択はマウスの左ボタンで行う。シーンをデフォルトのカメラビューにリセットするには、マウスホイールをクリックします。タッチデバイスでは、回転はタップ&移動、選択はタップ&ホールド、ズームはピンチ操作で行います。

軸がQ3DScatterWidgetItemに明示的に設定されていない場合、ラベルのない一時的なデフォルト軸が作成されます。これらのデフォルト軸は、軸アクセサを介して変更することができますが、いずれかの軸が方向に対して明示的に設定されるとすぐに、その方向のデフォルト軸は破棄されます。

Q3DScatterWidgetItemは同時に表示可能な複数のシリーズをサポートしています。

Q3DScatterWidgetItemは透明度をサポートしています。この機能により、スキャッターポイントの不透明度を調整し、部分的に透明にしたり、完全に透明にしたり、不透明にしたりすることができます。

最小のQ3DScatterWidgetItemグラフを構築する方法

まず、Q3DScatterWidgetItemを構築する。この例ではグラフをトップレベルウィンドウとして実行しているので、デフォルトで設定されているQt::FramelessWindowHint フラグをクリアする必要がある:

QQuickWidget quickWidget;
Q3DScatterWidgetItem scatter;
scatter.setWidget(&quickWidget);
scatter.widget()->setMinimumSize(QSize(256, 256));

これでQ3DScatterWidgetItemはレンダリングするデータを受け取る準備ができた。3つのQVector3D アイテムのシリーズを1つ追加する:

注: 新しいプロキシとシリーズの関係では、データはシリーズで保持される。したがって、プロキシがデータを追加、削除、編集できるようにするには、最初にシリーズを作成することが前提条件となります。

QScatter3DSeries series;
QScatterDataArray data;
data << QScatterDataItem(0.5f, 0.5f, 0.5f) << QScatterDataItem(-0.3f, -0.5f, -0.4f)
     << QScatterDataItem(0.0f, -0.3f, 0.2f);
series.dataProxy()->addItems(data);
scatter.addSeries(&series);

最後に、それを可視に設定する必要があります:

scatter.widget()->show();

このグラフの作成と表示に必要なコード一式は以下の通りである:

#include <QtGraphs>
#include <QtGraphsWidgets/q3dscatterwidgetitem.h>
#include <QtWidgets/qapplication.h>

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

    QQuickWidget quickWidget;
    Q3DScatterWidgetItem scatter;
    scatter.setWidget(&quickWidget);
    scatter.widget()->setMinimumSize(QSize(256, 256));
    QScatter3DSeries series;
    QScatterDataArray data;
    data << QScatterDataItem(0.5f, 0.5f, 0.5f) << QScatterDataItem(-0.3f, -0.5f, -0.4f)
         << QScatterDataItem(0.0f, -0.3f, 0.2f);
    series.dataProxy()->addItems(data);
    scatter.addSeries(&series);
    scatter.widget()->show();

    return app.exec();
}

この数行のコードから、このようなグラフが作成される:

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

Q3DBarsWidgetItem,Q3DSurfaceWidgetItem,Qt Graphs C++ Classes for 3Dも参照してください

プロパティの説明

axisX : QValue3DAxis*

このプロパティは、アクティブな x 軸を保持します。

axis をアクティブ X 軸として設定します。暗黙的にaddAxis() を呼び出して、軸の所有権をこのグラフに移します。

axis が NULL の場合、ラベルと自動調整範囲を持たない一時的なデフォルト軸が作成される。この一時的な軸は、他の軸が同じ向きに明示的に設定されると破棄される。

アクセス関数:

QValue3DAxis *axisX() const
void setAxisX(QValue3DAxis *axis)

通知シグナル:

void axisXChanged(QValue3DAxis *axis)

addAxis() およびreleaseAxis()も参照

axisY : QValue3DAxis*

このプロパティは、アクティブな Y 軸を保持します。

axis をアクティブな Y 軸として設定します。暗黙的にaddAxis() を呼び出して、軸の所有権をこのグラフに移します。

axis が NULL の場合、ラベルと自動調整範囲を持たない一時的なデフォルト軸が作成される。この一時的な軸は、他の軸が同じ向きに明示的に設定されると破棄される。

アクセス関数:

QValue3DAxis *axisY() const
void setAxisY(QValue3DAxis *axis)

通知シグナル:

void axisYChanged(QValue3DAxis *axis)

addAxis() およびreleaseAxis()も参照

axisZ : QValue3DAxis*

このプロパティは、アクティブな Z 軸を保持します。

axis をアクティブな Z 軸として設定します。暗黙的にaddAxis() を呼び出して、軸の所有権をこのグラフに移します。

axis が NULL の場合、ラベルと自動調整範囲を持たない一時的なデフォルト軸が作成される。この一時的な軸は、他の軸が同じ向きに明示的に設定されると破棄される。

アクセス関数:

QValue3DAxis *axisZ() const
void setAxisZ(QValue3DAxis *axis)

通知シグナル:

void axisZChanged(QValue3DAxis *axis)

addAxis() およびreleaseAxis()も参照して ください。

[read-only] selectedSeries : QScatter3DSeries* const

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

アクセス関数:

QScatter3DSeries *selectedSeries() const

通知シグナル:

void selectedSeriesChanged(QScatter3DSeries *series)

メンバ関数ドキュメント

[explicit] Q3DScatterWidgetItem::Q3DScatterWidgetItem(QObject *parent = nullptr)

新しい 3D 散布図をオプションのparent で構築します。

[override virtual noexcept] Q3DScatterWidgetItem::~Q3DScatterWidgetItem()

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

void Q3DScatterWidgetItem::addAxis(QValue3DAxis *axis)

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

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

void Q3DScatterWidgetItem::addSeries(QScatter3DSeries *series)

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

Q3DGraphsWidgetItem::hasSeries()も参照

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

追加されたすべての軸のリストを返します。

addAxis() も参照して ください。

void Q3DScatterWidgetItem::releaseAxis(QValue3DAxis *axis)

このグラフにaxis が追加されている場合、その所有権を呼び出し元に返します。解放されたaxis が使用中の場合は、新しい既定軸が作成され、アクティブに設定されます。

デフォルト軸が解放され、後で追加し直された場合、他の軸と同じように動作します。

addAxis()、setAxisX()、setAxisY()、およびsetAxisZ()も参照して ください。

void Q3DScatterWidgetItem::removeSeries(QScatter3DSeries *series)

グラフからseries を削除します。

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

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

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

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

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