Q3DBars Class

Q3DBarsクラスは3D棒グラフをレンダリングするメソッドを提供します。詳細...

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

プロパティ

パブリック関数

Q3DBars(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)
virtual ~Q3DBars()
void addAxis(QAbstract3DAxis *axis)
void addSeries(QBar3DSeries *series)
QList<QAbstract3DAxis *> axes() const
QSizeF barSeriesMargin() const
QSizeF barSpacing() const
float barThickness() const
QCategory3DAxis *columnAxis() const
float floorLevel() const
void insertSeries(int index, QBar3DSeries *series)
bool isBarSpacingRelative() const
bool isMultiSeriesUniform() const
QBar3DSeries *primarySeries() const
void releaseAxis(QAbstract3DAxis *axis)
void removeSeries(QBar3DSeries *series)
QCategory3DAxis *rowAxis() const
QBar3DSeries *selectedSeries() const
QList<QBar3DSeries *> seriesList() const
void setBarSeriesMargin(const QSizeF &margin)
void setBarSpacing(const QSizeF &spacing)
void setBarSpacingRelative(bool relative)
void setBarThickness(float thicknessRatio)
void setColumnAxis(QCategory3DAxis *axis)
void setFloorLevel(float level)
void setMultiSeriesUniform(bool uniform)
void setPrimarySeries(QBar3DSeries *series)
void setRowAxis(QCategory3DAxis *axis)
void setValueAxis(QValue3DAxis *axis)
QValue3DAxis *valueAxis() const

シグナル

void barSeriesMarginChanged(const QSizeF &margin)
void barSpacingChanged(const QSizeF &spacing)
void barSpacingRelativeChanged(bool relative)
void barThicknessChanged(float thicknessRatio)
void columnAxisChanged(QCategory3DAxis *axis)
void floorLevelChanged(float level)
void multiSeriesUniformChanged(bool uniform)
void primarySeriesChanged(QBar3DSeries *series)
void rowAxisChanged(QCategory3DAxis *axis)
void selectedSeriesChanged(QBar3DSeries *series)
void valueAxisChanged(QValue3DAxis *axis)

詳細説明

このクラスは、棒グラフを3Dで描画し、シーンを自由に回転させて表示できるようにします。回転はマウスの右ボタンを押しながらマウスを動かすことで行います。ズームはマウスホイールで行います。選択(有効な場合)はマウスの左ボタンで行います。シーンをデフォルトのカメラビューにリセットするには、マウスホイールをクリックします。タッチデバイスでは、回転はタップ&移動、選択はタップ&ホールド、ズームはピンチ操作で行います。

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

Q3DBarsは、同時に表示される複数の系列をサポートします。全ての系列が同じ量の行と列を持つ必要はありません。行と列のラベルは、行軸と列軸に明示的に定義されていない限り、最初に追加された系列から取得されます。

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

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

Q3DBars bars;
bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);

Q3DBarsを構築した後、行軸と列軸の範囲を変更することで、データウィンドウを設定することができます。データウィンドウはデフォルトでシリーズ内の全てのデータを表示するので、これは必須ではありません。データ量が多い場合、通常はその一部だけを表示するのが望ましい。この例では、最初の5行と列を表示するようにデータウィンドウを設定してみましょう:

bars.rowAxis()->setRange(0, 4);
bars.columnAxis()->setRange(0, 4);

これでQ3DBarsは、レンダリングするデータを受け取る準備ができました。これでQ3DBarsは、レンダリングするデータを受け取る準備ができました:

QBar3DSeries *series = new QBar3DSeries;
QBarDataRow *data = new QBarDataRow;
*data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
series->dataProxy()->addRow(data);
bars.addSeries(series);

注意: データウィンドウを5 x 5に設定しましたが、1行のデータしか追加していません。残りの行は空白になります。

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

bars.show();

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

#include <QtDataVisualization>

int main(int argc, char **argv)
{
    qputenv("QSG_RHI_BACKEND", "opengl");
    QGuiApplication app(argc, argv);

    Q3DBars bars;
    bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);
    bars.rowAxis()->setRange(0, 4);
    bars.columnAxis()->setRange(0, 4);
    QBar3DSeries *series = new QBar3DSeries;
    QBarDataRow *data = new QBarDataRow;
    *data << 1.0f << 3.0f << 7.5f << 5.0f << 2.2f;
    series->dataProxy()->addRow(data);
    bars.addSeries(series);
    bars.show();

    return app.exec();
}

この数行のコードから、このようなものができあがる:

シーンを回転させたり、ズームインしたり、バーを選択してその値を見たりすることはできるが、この最小限のコード例には、他のインタラクションは含まれていない。この最小限のコード例には、他のインタラクションは含まれていません。バー・グラフのように、提供されている例に慣れることで、より多くを学ぶことができます。

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

プロパティ・ドキュメンテーション

[since 6.3] barSeriesMargin : QSizeF

XおよびZ次元における系列列間のマージン。適切な値は[0,1]の範囲である。

デフォルトでは(0.0, 0.0) に設定されている。このプロパティは、異なるシリーズのバーを並べて表示することを可能にします。

このプロパティは Qt 6.3 で導入されました。

アクセス関数:

QSizeF barSeriesMargin() const
void setBarSeriesMargin(const QSizeF &margin)

Notifier シグナル:

void barSeriesMarginChanged(const QSizeF &margin)

barSpacingも参照してください

barSpacing : QSizeF

X と Z の寸法におけるバーの間隔。

デフォルトでは(1.0, 1.0) に設定されています。間隔はbarSpacingRelative プロパティの影響を受けます。

アクセス関数:

QSizeF barSpacing() const
void setBarSpacing(const QSizeF &spacing)

Notifier シグナル:

void barSpacingChanged(const QSizeF &spacing)

barSpacingRelativemultiSeriesUniformbarSeriesMarginも参照

barSpacingRelative : bool

このプロパティは、スペーシングが絶対的か、バーの太さに対する相対的かを保持する。

このプロパティがtrue の場合、0.0 の値は、バーが横並びに配置されることを意味し、1.0 は、バーとバーの間にバーの太さと同じ幅のスペースが空くことを意味します。プリセットはtrue

アクセス機能:

bool isBarSpacingRelative() const
void setBarSpacingRelative(bool relative)

通知シグナル:

void barSpacingRelativeChanged(bool relative)

barThickness : float

このプロパティは、X寸法とZ寸法のバーの太さの比率を保持する。

1.0 は、バーの幅が奥行きと同じであることを意味し、0.5 は、バーの奥行きが幅の2倍になることを意味します。デフォルトでは1.0 に設定されています。

アクセス関数:

float barThickness() const
void setBarThickness(float thicknessRatio)

通知シグナル:

void barThicknessChanged(float thicknessRatio)

columnAxis : QCategory3DAxis*

このプロパティは、アクティブな列に接続された軸を保持する。

アクセス関数:

QCategory3DAxis *columnAxis() const
void setColumnAxis(QCategory3DAxis *axis)

ノーティファイアシグナル:

void columnAxisChanged(QCategory3DAxis *axis)

floorLevel : float

このプロパティは、棒グラフのフロアレベルをY軸データ座標で保持します。

実際のフロアレベルは、Y軸の最小値と最大値によって制限されます。デフォルトはゼロ。

アクセス関数:

float floorLevel() const
void setFloorLevel(float level)

通知シグナル:

void floorLevelChanged(float level)

multiSeriesUniform : bool

このプロパティは、複数の系列が表示されている場合でも、単一の系列バーに設定された比率で棒グラフをスケーリングするかどうかを保持する。

true に設定すると、bar spacing は X 軸にのみ正しく適用される。デフォルトではfalse に設定されています。

アクセス機能:

bool isMultiSeriesUniform() const
void setMultiSeriesUniform(bool uniform)

通知シグナル:

void multiSeriesUniformChanged(bool uniform)

primarySeries : QBar3DSeries*

このプロパティは、グラフの主系列を保持する。

アクセス関数:

QBar3DSeries *primarySeries() const
void setPrimarySeries(QBar3DSeries *series)

通知シグナル:

void primarySeriesChanged(QBar3DSeries *series)

rowAxis : QCategory3DAxis*

このプロパティは、アクティブな行に接続されている軸を保持する。

アクセス機能

QCategory3DAxis *rowAxis() const
void setRowAxis(QCategory3DAxis *axis)

通知シグナル:

void rowAxisChanged(QCategory3DAxis *axis)

[read-only] selectedSeries : QBar3DSeries* const

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

selectionModeにSelectionMultiSeries フラグが設定されている場合、このプロパティは選択されたバーを所有する系列を保持する。

アクセス関数:

QBar3DSeries *selectedSeries() const

通知シグナル:

void selectedSeriesChanged(QBar3DSeries *series)

valueAxis : QValue3DAxis*

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

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

アクセス関数:

QValue3DAxis *valueAxis() const
void setValueAxis(QValue3DAxis *axis)

通知シグナル:

void valueAxisChanged(QValue3DAxis *axis)

addAxis() およびreleaseAxis()も参照のこと

メンバ関数ドキュメント

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

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

[virtual noexcept] Q3DBars::~Q3DBars()

3D バーグラフを破棄します。

void Q3DBars::addAxis(QAbstract3DAxis *axis)

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

releaseAxis(),setValueAxis(),setRowAxis(),setColumnAxis()も参照

void Q3DBars::addSeries(QBar3DSeries *series)

series をグラフに追加します。グラフは複数の系列を含むことができるが、軸は1セットのみであるため、可視化されたデータが意味を持つためには、すべての系列の行と列が一致していなければならない。グラフに複数の可視系列がある場合、軸にラベルが明示的に設定されていない場合は、主系列だけが軸の行や列のラベルを生成します。新しく追加された系列が選択されたバーを指定している場合は、そのバーが強調表示され、既存の選択はクリアされます。アクティブな選択を持つことができるのは、追加された1つの系列だけです。

seriesList()、primarySeries 、およびQAbstract3DGraph::hasSeries()も参照

QList<QAbstract3DAxis *> Q3DBars::axes() const

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

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

void Q3DBars::insertSeries(int index, QBar3DSeries *series)

series を系列リストのindex の位置に挿入します。series がすでにリストに追加されている場合は、新しいindex に移動します。

index 注意: あるシリーズを、その古いインデックスの後にある新しいindex に移動させる場合、リスト内の新しい位置は、そのシリーズがまだその古いインデックスにあるものとして計算されます。

addSeries()、seriesList()、QAbstract3DGraph::hasSeries()も参照のこと

void Q3DBars::releaseAxis(QAbstract3DAxis *axis)

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

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

addAxis()、setValueAxis()、setRowAxis()、およびsetColumnAxis()も参照して ください。

void Q3DBars::removeSeries(QBar3DSeries *series)

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

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

QList<QBar3DSeries *> Q3DBars::seriesList() const

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

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

void Q3DBars::setColumnAxis(QCategory3DAxis *axis)

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

axis が NULL の場合、ラベルのない一時的な既定の軸が作成されます。この一時的な軸は、別の軸が同じ方向に明示的に設定されると破棄されます。

メモ: プロパティcolumnAxis のセッター関数。

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

void Q3DBars::setPrimarySeries(QBar3DSeries *series)

series をグラフの主系列として設定します。ラベルが軸に明示的に設定されていない場合、主系列が行軸ラベルと列軸ラベルを決定する。

指定された系列がまだグラフに追加されていない場合、それを主系列として設定すると、その系列も暗黙的にグラフに追加される。

主系列自体がグラフから削除されると、このプロパティはデフォルトにリセットされる。

series が NULL の場合、このプロパティはデフォルトにリセットされる。デフォルトは、最初に追加された系列、またはグラフに系列が追加されていない場合は0である。

注: プロパティprimarySeries のセッター関数。

primarySeries()も参照してください

void Q3DBars::setRowAxis(QCategory3DAxis *axis)

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

axis が NULL の場合、ラベルのない一時的な既定の軸が作成されます。この一時的な軸は、別の軸が同じ方向に明示的に設定されると破棄されます。

メモ: プロパティrowAxis のセッター関数。

rowAxis()、addAxis()、releaseAxis()も参照してください

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