Q3DBars Class

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

ヘッダー #include <Q3DBars>
CMake: find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
qmake: QT += datavisualization
以来:QtDataVisualization 1.0
継承: 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();
}

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

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

Q3DScatterQ3DSurface 、および Qt 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)

通知シグナル:

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 は、1本のバーの太さと同じ幅のスペースがバーの間に残されることを意味します。プリセットは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 を1つ減じたものになります。

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

© 2025 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.