Q3DBarsWidgetItem Class

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

ヘッダー #include <Q3DBarsWidgetItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS GraphsWidgets)
target_link_libraries(mytarget PRIVATE Qt6::GraphsWidgets)
qmake: QT += graphswidgets
継承: Q3DGraphsWidgetItem

プロパティ

パブリック機能

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

軸がQ3DBarsWidgetItemに明示的に設定されていない場合、ラベルのない一時的なデフォルト軸が作成されます。これらのデフォルト軸は、軸アクセサを介して変更することができますが、軸がオリエンテーションのために明示的に設定されるとすぐに、そのオリエンテーションのためのデフォルト軸は破棄されます。

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

Q3DBarsWidgetItemは透明度をサポートしています。この機能により、バーの不透明度を調整し、部分的に透明にしたり、完全に透明にしたり、不透明にすることができます。

最小限のQ3DBarsWidgetItemグラフの作成方法

まず、Q3DBarsWidgetItemのインスタンスを作成します:

QQuickWidget quickWidget;
Q3DBarsWidgetItem bars;
bars.setWidget(&quickWidget);
bars.widget()->setMinimumSize(QSize(256, 256));

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

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

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

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

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

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

bars.widget()->show();

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

#include <QtGraphs>
#include <QtGraphsWidgets/q3dbarswidgetitem.h>
#include <QtWidgets/qapplication.h>
int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QQuickWidget quickWidget;
    Q3DBarsWidgetItem bars;
    bars.setWidget(&quickWidget);
    bars.widget()->setMinimumSize(QSize(256, 256));
    bars.rowAxis()->setRange(0, 4);
    bars.columnAxis()->setRange(0, 4);
    QBar3DSeries series;
    QBarDataRow data;
    data << QBarDataItem(1.0f) << QBarDataItem(3.0f) << QBarDataItem(7.5f) << QBarDataItem(5.0f)
         << QBarDataItem(2.2f);
    series.dataProxy()->addRow(data);
    bars.addSeries(&series);
    bars.widget()->show();

    return app.exec();
}

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

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

Q3DScatterWidgetItemQ3DSurfaceWidgetItemQt Graphs C++ Classes for 3Dも参照してください

プロパティのドキュメント

barSeriesMargin : QSizeF

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

デフォルトでは(0.0, 0.0) に設定されている。このプロパティを使用すると、異なるシリーズのバーを並べて表示することができますが、列と列の間にはスペースがあります。

アクセス関数:

QSizeF barSeriesMargin() const
void setBarSeriesMargin(QSizeF margin)

通知シグナル:

void barSeriesMarginChanged(QSizeF margin)

barSpacingも参照

barSpacing : QSizeF

X寸法とZ寸法のバー間隔。

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

アクセス関数:

QSizeF barSpacing() const
void setBarSpacing(QSizeF spacing)

Notifier シグナル:

void barSpacingChanged(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*

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

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

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

アクセス関数:

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

通知シグナル:

void columnAxisChanged(QCategory3DAxis *axis)

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

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*

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

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

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

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

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

アクセス関数:

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

通知シグナル:

void primarySeriesChanged(QBar3DSeries *series)

rowAxis : QCategory3DAxis*

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

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

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

アクセス関数:

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

通知シグナル:

void rowAxisChanged(QCategory3DAxis *axis)

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

[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] Q3DBarsWidgetItem::Q3DBarsWidgetItem(QObject *parent = nullptr)

新しい 3D 棒グラフを、オプションのparent で構築します。

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

3D棒グラフを破壊する。

void Q3DBarsWidgetItem::addAxis(QAbstract3DAxis *axis)

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

releaseAxis(),setValueAxis(),setRowAxis(),setColumnAxis()も参照のこと

void Q3DBarsWidgetItem::addSeries(QBar3DSeries *series)

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

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

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

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

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

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

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

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

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

void Q3DBarsWidgetItem::releaseAxis(QAbstract3DAxis *axis)

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

既定の軸が解放され、後で追加された場合、他の軸と同じように動作します。

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

void Q3DBarsWidgetItem::removeSeries(QBar3DSeries *series)

グラフからseries を削除する。

Q3DGraphsWidgetItem::hasSeries()も参照

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

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

Q3DGraphsWidgetItem::hasSeries()も参照

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