Q3DBarsWidgetItem Class

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

Header: #include <Q3DBarsWidgetItem>
CMake: find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmake: QT += graphs
Inherits: 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のインスタンスを作成する。この例ではグラフをトップレベルウィンドウとして実行しているので、デフォルトで設定されているQt::FramelessWindowHint フラグをクリアする必要があります:

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();
}

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

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

Q3DScatterWidgetItem,Q3DSurfaceWidgetItem,Qt 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 は、バーとバーの間にバーの太さと同じ幅のスペースが空くことを意味します。プリセットは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() も参照して ください。

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