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行および5列が表示されるように設定してみましょう:
bars.rowAxis()->setRange(0, 4);
bars.columnAxis()->setRange(0, 4);これで、Q3DBarsは描画用のデータを受け入れる準備が整いました。5つの値からなる1行のシリーズを作成します:
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×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();
}そして、この数行のコードによって次のような結果が得られます:

シーンの回転やズームインが可能で、棒グラフを選択してその値を確認することもできますが、この最小限のコード例にはそれ以外のインタラクションは含まれていません。バーグラフなどの提供されている例を参照することで、さらに詳しく学ぶことができます。
関連項目: Q3DScatter 、Q3DSurface 、および 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) |
通知信号:
| void | barSpacingChanged(const QSizeF &spacing) |
「 barSpacingRelative 」、「multiSeriesUniform 」、および「barSeriesMargin 」も参照してください 。
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軸の最小値と最大値によって制限されます。デフォルトは0です。
アクセス関数:
| 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*
このプロパティには、選択されたシリーズまたは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()。
© 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.