Q3DBars Class

Die Klasse Q3DBars bietet Methoden zur Darstellung von 3D-Balkendiagrammen. Mehr...

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

Eigenschaften

Öffentliche Funktionen

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

Signale

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)

Detaillierte Beschreibung

Diese Klasse ermöglicht es Entwicklern, Balkendiagramme in 3D darzustellen und sie durch freie Drehung der Szene zu betrachten. Das Drehen erfolgt durch Halten der rechten Maustaste und Bewegen der Maus. Das Zoomen erfolgt mit dem Mausrad. Die Auswahl, falls aktiviert, erfolgt mit der linken Maustaste. Die Szene kann durch Klicken auf das Mausrad auf die Standardkameraansicht zurückgesetzt werden. Bei Touch-Geräten erfolgt die Drehung durch Tippen und Bewegen, die Auswahl durch Tippen und Halten und der Zoom durch Aufziehen.

Wenn keine Achsen explizit auf Q3DBars gesetzt werden, werden temporäre Standardachsen ohne Beschriftung erzeugt. Diese Standardachsen können über Achsen-Accessors geändert werden, aber sobald eine Achse explizit für die Ausrichtung festgelegt wird, wird die Standardachse für diese Ausrichtung zerstört.

Q3DBars unterstützt mehr als eine gleichzeitig sichtbare Serie. Es ist nicht notwendig, dass alle Serien die gleiche Anzahl von Zeilen und Spalten haben. Zeilen- und Spaltenbeschriftungen werden von der ersten hinzugefügten Serie übernommen, es sei denn, sie wurden explizit für Zeilen- und Spaltenachsen definiert.

So konstruieren Sie ein minimales Q3DBars-Diagramm

Konstruieren Sie zunächst eine Instanz von Q3DBars. Da wir das Diagramm in diesem Beispiel als Fenster der obersten Ebene ausführen, müssen wir das Flag Qt::FramelessWindowHint löschen, das standardmäßig gesetzt ist:

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

Nachdem Sie Q3DBars erstellt haben, können Sie das Datenfenster einstellen, indem Sie den Bereich auf den Zeilen- und Spaltenachsen ändern. Dies ist nicht zwingend erforderlich, da das Datenfenster standardmäßig alle Daten der Reihe anzeigt. Wenn die Datenmenge groß ist, ist es in der Regel besser, nur einen Teil davon anzuzeigen. Für dieses Beispiel stellen wir das Datenfenster so ein, dass die ersten fünf Zeilen und Spalten angezeigt werden:

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

Jetzt ist Q3DBars bereit, Daten zu empfangen, die gerendert werden sollen. Erstellen Sie eine Reihe mit einer Zeile mit 5 Werten:

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

Hinweis: Wir haben das Datenfenster auf 5 x 5 eingestellt, aber wir fügen nur eine Datenreihe hinzu. Das ist in Ordnung, die restlichen Zeilen sind einfach leer.

Schließlich müssen Sie das Fenster sichtbar machen:

bars.show();

Der gesamte Code, der zum Erstellen und Anzeigen dieses Diagramms erforderlich ist, lautet:

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

Und das ist das Ergebnis dieser wenigen Codezeilen:

Die Szene kann gedreht und gezoomt werden, und ein Balken kann ausgewählt werden, um seinen Wert zu sehen, aber in diesem minimalen Codebeispiel ist keine weitere Interaktion vorgesehen. Sie können mehr lernen, wenn Sie sich mit den mitgelieferten Beispielen, wie dem Balkendiagramm, vertraut machen.

Siehe auch Q3DScatter, Q3DSurface, und Qt Data Visualization C++ Classes.

Dokumentation der Eigenschaft

[since 6.3] barSeriesMargin : QSizeF

Abstand zwischen den Spalten der Reihe in den Dimensionen X und Z. Sinnvolle Werte liegen im Bereich [0,1).

Standardmäßig auf (0.0, 0.0) voreingestellt. Diese Eigenschaft ermöglicht die Anzeige von Balken aus verschiedenen Serien nebeneinander, aber mit einem Abstand zwischen den Spalten.

Diese Eigenschaft wurde in Qt 6.3 eingeführt.

Zugriffsfunktionen:

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

Notifier-Signal:

void barSeriesMarginChanged(const QSizeF &margin)

Siehe auch barSpacing.

barSpacing : QSizeF

Abstand der Balken in den Dimensionen X und Z.

Standardmäßig auf (1.0, 1.0) voreingestellt. Die Abstände werden von der Eigenschaft barSpacingRelative beeinflusst.

Zugriffsfunktionen:

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

Melder-Signal:

void barSpacingChanged(const QSizeF &spacing)

Siehe auch barSpacingRelative, multiSeriesUniform, und barSeriesMargin.

barSpacingRelative : bool

Diese Eigenschaft gibt an, ob der Abstand absolut oder relativ zur Balkendicke ist.

Bei true bedeutet der Wert 0.0, dass die Balken nebeneinander angeordnet sind, 1.0 bedeutet, dass zwischen den Balken ein Abstand von der Dicke eines Balkens gelassen wird, usw. Voreingestellt auf true.

Zugriffsfunktionen:

bool isBarSpacingRelative() const
void setBarSpacingRelative(bool relative)

Melder-Signal:

void barSpacingRelativeChanged(bool relative)

barThickness : float

Diese Eigenschaft gibt das Verhältnis der Balkenstärke zwischen den Dimensionen X und Z an.

Der Wert 1.0 bedeutet, dass die Balken so breit wie tief sind, während 0.5 sie doppelt so tief wie breit macht. Standardmäßig auf 1.0 eingestellt.

Zugriffsfunktionen:

float barThickness() const
void setBarThickness(float thicknessRatio)

Melder-Signal:

void barThicknessChanged(float thicknessRatio)

columnAxis : QCategory3DAxis*

Diese Eigenschaft enthält die Achse, die mit der aktiven Spalte verbunden ist.

Zugriffsfunktionen:

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

Melder-Signal:

void columnAxisChanged(QCategory3DAxis *axis)

floorLevel : float

Diese Eigenschaft enthält die Bodenhöhe für das Balkendiagramm in Y-Achsen-Datenkoordinaten.

Die tatsächliche Bodenhöhe wird durch die Mindest- und Höchstwerte der Y-Achse begrenzt. Der Standardwert ist Null.

Zugriffsfunktionen:

float floorLevel() const
void setFloorLevel(float level)

Melder-Signal:

void floorLevelChanged(float level)

multiSeriesUniform : bool

Diese Eigenschaft legt fest, ob Balken mit Proportionen skaliert werden sollen, die auf einen einzelnen Serienbalken eingestellt sind, auch wenn mehrere Serien angezeigt werden.

Wenn sie auf true gesetzt ist, wird bar spacing nur auf die X-Achse korrekt angewendet. Standardmäßig auf false voreingestellt.

Zugriffsfunktionen:

bool isMultiSeriesUniform() const
void setMultiSeriesUniform(bool uniform)

Melder-Signal:

void multiSeriesUniformChanged(bool uniform)

primarySeries : QBar3DSeries*

Diese Eigenschaft enthält die Primärreihe des Diagramms.

Zugriffsfunktionen:

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

Benachrichtigungssignal:

void primarySeriesChanged(QBar3DSeries *series)

rowAxis : QCategory3DAxis*

Diese Eigenschaft enthält die Achse, die mit der aktiven Zeile verbunden ist.

Zugriffsfunktionen:

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

Benachrichtigungssignal:

void rowAxisChanged(QCategory3DAxis *axis)

[read-only] selectedSeries : QBar3DSeries* const

Diese Eigenschaft enthält die ausgewählte Serie oder einen Nullwert.

Wenn bei selectionMode das Flag SelectionMultiSeries gesetzt ist, enthält diese Eigenschaft die Serie, die den ausgewählten Balken besitzt.

Zugriffsfunktionen:

QBar3DSeries *selectedSeries() const

Benachrichtigungssignal:

void selectedSeriesChanged(QBar3DSeries *series)

valueAxis : QValue3DAxis*

Setzt die aktive Wertachse (die Y-Achse) auf axis. Ruft implizit addAxis() auf, um die Eigentümerschaft von axis auf dieses Diagramm zu übertragen.

Wenn axis gleich Null ist, wird eine temporäre Standardachse ohne Beschriftung und mit einem sich automatisch anpassenden Bereich erstellt. Diese temporäre Achse wird zerstört, wenn eine andere Achse explizit auf dieselbe Ausrichtung gesetzt wird.

Zugriffsfunktionen:

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

Notifier-Signal:

void valueAxisChanged(QValue3DAxis *axis)

Siehe auch addAxis() und releaseAxis().

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein neues 3D-Balkendiagramm mit optionalem parent Fenster und Oberfläche format.

[virtual noexcept] Q3DBars::~Q3DBars()

Zerstört das 3D-Balkendiagramm.

void Q3DBars::addAxis(QAbstract3DAxis *axis)

Fügt axis zum Diagramm hinzu. Die über addAxis hinzugefügten Achsen werden noch nicht verwendet. addAxis wird lediglich verwendet, um dem Diagramm die Eigentümerschaft an axis zu übertragen. Die axis darf nicht null sein oder einem anderen Graphen hinzugefügt werden.

Siehe auch releaseAxis(), setValueAxis(), setRowAxis(), und setColumnAxis().

void Q3DBars::addSeries(QBar3DSeries *series)

Fügt die series zum Diagramm hinzu. Ein Diagramm kann mehrere Reihen enthalten, aber nur einen Satz Achsen, so dass die Zeilen und Spalten aller Reihen übereinstimmen müssen, damit die visualisierten Daten aussagekräftig sind. Wenn das Diagramm mehrere sichtbare Reihen enthält, erzeugt nur die primäre Reihe die Zeilen- oder Spaltenbeschriftungen auf den Achsen, wenn die Beschriftungen nicht explizit für die Achsen festgelegt wurden. Wenn für die neu hinzugefügte Reihe ein ausgewählter Balken angegeben wurde, wird dieser hervorgehoben, und eine vorhandene Auswahl wird gelöscht. Nur eine hinzugefügte Reihe kann eine aktive Auswahl haben.

Siehe auch seriesList(), primarySeries, und QAbstract3DGraph::hasSeries().

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

Gibt die Liste aller hinzugefügten Achsen zurück.

Siehe auch addAxis().

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

Fügt series an der Position index in die Serienliste ein. Wurde die Serie series bereits in die Liste aufgenommen, wird sie an die neue Position index verschoben.

Hinweis: Wenn eine Reihe an eine neue index verschoben wird, die nach ihrem alten Index liegt, wird die neue Position in der Liste so berechnet, als befände sich die Reihe noch an ihrem alten Index, so dass der endgültige Index tatsächlich der um eins verringerte index ist.

Siehe auch addSeries(), seriesList(), und QAbstract3DGraph::hasSeries().

void Q3DBars::releaseAxis(QAbstract3DAxis *axis)

Gibt das Eigentum an axis an den Aufrufer zurück, wenn es zu diesem Diagramm hinzugefügt wurde. Wenn die freigegebene axis verwendet wird, wird eine neue Standardachse erstellt und aktiv gesetzt.

Wenn die Standardachse freigegeben und später wieder hinzugefügt wird, verhält sie sich wie jede andere Achse auch.

Siehe auch addAxis(), setValueAxis(), setRowAxis(), und setColumnAxis().

void Q3DBars::removeSeries(QBar3DSeries *series)

Entfernt die series aus dem Diagramm.

Siehe auch QAbstract3DGraph::hasSeries().

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

Gibt die Liste der zu diesem Diagramm hinzugefügten Serien zurück.

Siehe auch QAbstract3DGraph::hasSeries().

void Q3DBars::setColumnAxis(QCategory3DAxis *axis)

Setzt die Achse der aktiven Spalte auf axis. Ruft implizit addAxis() auf, um den Besitz der Achse auf dieses Diagramm zu übertragen.

Wenn axis gleich Null ist, wird eine temporäre Standardachse ohne Beschriftung erstellt. Diese temporäre Achse wird zerstört, wenn eine andere Achse explizit auf dieselbe Ausrichtung gesetzt wird.

Hinweis: Setter-Funktion für die Eigenschaft columnAxis.

Siehe auch columnAxis(), addAxis(), und releaseAxis().

void Q3DBars::setPrimarySeries(QBar3DSeries *series)

Legt series als primäre Reihe des Diagramms fest. Die primäre Serie bestimmt die Zeilen- und Spaltenachsenbeschriftungen, wenn die Beschriftungen nicht explizit auf die Achsen gesetzt werden.

Wenn die angegebene Reihe noch nicht zum Diagramm hinzugefügt wurde, wird sie durch die Festlegung als primäre Reihe auch implizit zum Diagramm hinzugefügt.

Wenn die primäre Reihe selbst aus dem Diagramm entfernt wird, wird diese Eigenschaft auf den Standardwert zurückgesetzt.

Wenn series null ist, wird diese Eigenschaft auf den Standardwert zurückgesetzt. Der Standardwert ist die erste hinzugefügte Reihe oder Null, wenn dem Diagramm keine Reihen hinzugefügt werden.

Hinweis: Setter-Funktion für die Eigenschaft primarySeries.

Siehe auch primarySeries().

void Q3DBars::setRowAxis(QCategory3DAxis *axis)

Setzt die Achse der aktiven Zeile auf axis. Ruft implizit addAxis() auf, um das Eigentum an der Achse auf dieses Diagramm zu übertragen.

Wenn axis gleich Null ist, wird eine temporäre Standardachse ohne Beschriftung erstellt. Diese temporäre Achse wird zerstört, wenn eine andere Achse explizit auf dieselbe Ausrichtung gesetzt wird.

Hinweis: Setter-Funktion für die Eigenschaft rowAxis.

Siehe auch rowAxis(), addAxis(), und 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.