Q3DBars Class
Die Klasse „Q3DBars“ bietet Methoden zum Darstellen von 3D-Balkendiagrammen. Mehr...
| Header: | #include <Q3DBars> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DataVisualization) target_link_libraries(mytarget PRIVATE Qt6::DataVisualization) |
| qmake: | QT += datavisualization |
| Seit: | QtDataVisualization 1.0 |
| Erbt von: | QAbstract3DGraph |
| Status: | Veraltet |
Diese Klasse ist veraltet. Wir raten dringend davon ab, sie in neuem Code zu verwenden.
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) |
Ausführliche Beschreibung
Diese Klasse ermöglicht es Entwicklern, Balkendiagramme in 3D darzustellen und diese durch freies Drehen der Szene zu betrachten. Das Drehen erfolgt durch Gedrückthalten der rechten Maustaste und Bewegen der Maus. Das Zoomen erfolgt über das Mausrad. Die Auswahl erfolgt, sofern aktiviert, über die linke Maustaste. Die Szene kann durch Klicken auf das Mausrad auf die Standard-Kameraansicht zurückgesetzt werden. Auf Touch-Geräten erfolgt die Drehung durch Antippen und Ziehen, die Auswahl durch Antippen und Halten und das Zoomen durch Zusammenziehen der Finger.
Wenn in Q3DBars keine Achsen explizit festgelegt sind, werden temporäre Standardachsen ohne Beschriftungen erstellt. Diese Standardachsen können über Achsen-Accessoren geändert werden; sobald jedoch eine Achse explizit für die jeweilige Ausrichtung festgelegt wird, wird die Standardachse für diese Ausrichtung gelöscht.
Q3DBars unterstützt die gleichzeitige Darstellung mehrerer Reihen. Es ist nicht erforderlich, dass alle Reihen die gleiche Anzahl an Zeilen und Spalten aufweisen. Zeilen- und Spaltenbeschriftungen werden aus der zuerst hinzugefügten Reihe übernommen, sofern sie nicht explizit für die Zeilen- und Spaltenachsen definiert wurden.
So erstellen Sie ein minimales Q3DBars-Diagramm
Erstellen Sie zunächst eine Instanz von Q3DBars. Da wir das Diagramm in diesem Beispiel als Fenster auf oberster Ebene ausführen, müssen wir das Flag „ Qt::FramelessWindowHint “ zurücksetzen, das standardmäßig gesetzt ist:
Q3DBars bars;
bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);Nach der Erstellung von Q3DBars können Sie das Datenfenster anpassen, indem Sie den Bereich auf der Zeilen- und Spaltenachse ändern. Dies ist nicht zwingend erforderlich, da das Datenfenster standardmäßig alle Daten der Reihe anzeigt. Bei großen Datenmengen ist es in der Regel vorteilhaft, nur einen Teil davon darzustellen. Legen wir für dieses Beispiel das Datenfenster so fest, dass die ersten fünf Zeilen und Spalten angezeigt werden:
bars.rowAxis()->setRange(0, 4);
bars.columnAxis()->setRange(0, 4);Nun ist Q3DBars bereit, Daten zur Darstellung zu empfangen. Erstellen Sie eine Reihe mit einer Zeile aus 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 × 5 eingestellt, fügen aber nur eine Datenzeile hinzu. Das ist in Ordnung, die übrigen Zeilen bleiben einfach leer.
Abschließend müssen Sie die Serie als sichtbar festlegen:
bars.show();Der vollständige Code zum Erstellen und Anzeigen dieses Diagramms 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 lässt sich drehen und vergrößern, und ein Balken kann ausgewählt werden, um dessen Wert anzuzeigen; weitere Interaktionsmöglichkeiten sind in diesem minimalen Code-Beispiel jedoch nicht enthalten. Mehr erfahren Sie, wenn Sie sich mit den bereitgestellten Beispielen, wie dem Balkendiagramm, vertraut machen.
Siehe auch Q3DScatter, Q3DSurface und Qt Data Visualization C++ Classes.
Dokumentation zu den Eigenschaften
[since 6.3] barSeriesMargin : QSizeF
Abstand zwischen den Spalten der Reihen in der X- und Z-Dimension. Sinnvolle Werte liegen im Bereich [0,1).
Standardmäßig auf „ (0.0, 0.0) “ voreingestellt. Diese Eigenschaft ermöglicht die nebeneinanderliegende Darstellung von Balken verschiedener Reihen, jedoch mit Abstand zwischen den Spalten.
Diese Aufzählung 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 zwischen den Balken in der X- und Z-Richtung.
Standardmäßig auf „ (1.0, 1.0) “ voreingestellt. Der Abstand wird durch die Eigenschaft „ barSpacingRelative “ beeinflusst.
Zugriffsfunktionen:
| QSizeF | barSpacing() const |
| void | setBarSpacing(const QSizeF &spacing) |
Benachrichtigungssignal:
| void | barSpacingChanged(const QSizeF &spacing) |
Siehe auch „ barSpacingRelative “, „ multiSeriesUniform “ und „ barSeriesMargin “.
barSpacingRelative : bool
Diese Eigenschaft gilt unabhängig davon, ob der Abstand absolut oder relativ zur Balkenstärke ist.
Wenn der Wert „ true “ ist, bedeutet der Wert „ 0.0 “, dass die Balken nebeneinander platziert werden, „ 1.0 “ bedeutet, dass zwischen den Balken ein Abstand in der Breite einer Balkenstärke gelassen wird, und so weiter. Voreingestellt auf „ true “.
Zugriffsfunktionen:
| bool | isBarSpacingRelative() const |
| void | setBarSpacingRelative(bool relative) |
Benachrichtigungssignal:
| void | barSpacingRelativeChanged(bool relative) |
barThickness : float
Diese Eigenschaft legt das Verhältnis der Stabdicke zwischen der X- und der Z-Achse fest.
Der Wert „ 1.0 “ bedeutet, dass die Stäbe genauso breit wie tief sind, während „ 0.5 “ bewirkt, dass sie doppelt so tief wie breit sind. Standardmäßig ist „ 1.0 “ voreingestellt.
Zugriffsfunktionen:
| float | barThickness() const |
| void | setBarThickness(float thicknessRatio) |
Benachrichtigungssignal:
| void | barThicknessChanged(float thicknessRatio) |
columnAxis : QCategory3DAxis*
Diese Eigenschaft enthält die Achse, die an die aktive Spalte angehängt ist.
Zugriffsfunktionen:
| QCategory3DAxis * | columnAxis() const |
| void | setColumnAxis(QCategory3DAxis *axis) |
Benachrichtigungssignal:
| void | columnAxisChanged(QCategory3DAxis *axis) |
floorLevel : float
Diese Eigenschaft legt den unteren Grenzwert für das Balkendiagramm in den Datenkoordinaten der Y-Achse fest.
Die tatsächliche Untergrenze wird durch die Minimal- und Maximalwerte der Y-Achse begrenzt. Der Standardwert ist Null.
Zugriffsfunktionen:
| float | floorLevel() const |
| void | setFloorLevel(float level) |
Benachrichtigungssignal:
| void | floorLevelChanged(float level) |
multiSeriesUniform : bool
Diese Eigenschaft legt fest, ob die Balken anhand der Proportionen eines einzelnen Serienbalkens skaliert werden sollen, auch wenn mehrere Serien angezeigt werden.
Bei der Einstellung „ true “ wird „ bar spacing “ nur auf die X-Achse korrekt angewendet. Standardmäßig ist „ false “ voreingestellt.
Zugriffsfunktionen:
| bool | isMultiSeriesUniform() const |
| void | setMultiSeriesUniform(bool uniform) |
Benachrichtigungssignal:
| 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 der aktiven Zeile zugeordnet ist.
Zugriffsfunktionen:
| QCategory3DAxis * | rowAxis() const |
| void | setRowAxis(QCategory3DAxis *axis) |
Benachrichtigungssignal:
| void | rowAxisChanged(QCategory3DAxis *axis) |
[read-only] selectedSeries : QBar3DSeries*
Diese Eigenschaft enthält die ausgewählte Serie oder einen Nullwert.
Wenn für „selectionMode“ das Flag „ SelectionMultiSeries “ gesetzt ist, enthält diese Eigenschaft die Reihe, zu der der ausgewählte Balken gehört.
Zugriffsfunktionen:
| QBar3DSeries * | selectedSeries() const |
Notifier-Signal:
| void | selectedSeriesChanged(QBar3DSeries *series) |
valueAxis : QValue3DAxis*
Setzt die aktive Werteachse (die Y-Achse) auf „ axis “. Ruft implizit „ addAxis()“ auf, um die Eigentumsrechte an „ axis “ auf dieses Diagramm zu übertragen.
Ist ` axis ` null, wird eine temporäre Standardachse ohne Beschriftungen und mit automatisch angepasstem Bereich erstellt. Diese temporäre Achse wird gelöscht, 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 zu den Mitgliedsfunktionen
[explicit] Q3DBars::Q3DBars(const QSurfaceFormat *format = nullptr, QWindow *parent = nullptr)
Erstellt ein neues 3D-Balkendiagramm mit optionalem „ parent “-Fenster und Oberflächen- format.
[virtual noexcept] Q3DBars::~Q3DBars()
Löscht 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“ dient lediglich dazu, die Zuständigkeit für „ axis “ dem Diagramm zuzuweisen. „ axis “ darf nicht null sein oder bereits einem anderen Diagramm hinzugefügt worden sein.
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, jedoch nur einen Achsenpaar; daher müssen die Zeilen und Spalten aller Reihen übereinstimmen, 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, sofern diese nicht explizit auf den Achsen festgelegt wurden. Wenn für die neu hinzugefügte Reihe ein Balken ausgewählt wurde, wird dieser hervorgehoben und eine eventuell vorhandene Auswahl wird aufgehoben. Nur eine der hinzugefügten Reihen 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 den „ series “ an der Position „ index “ in die Serienliste ein. Falls der „ series “ bereits zur Liste hinzugefügt wurde, wird er an die neue Position „ index “ verschoben.
Hinweis: Beim Verschieben einer Serie an einen neuen index, der nach ihrem alten Index liegt, wird die neue Position in der Liste so berechnet, als befände sich die Serie noch an ihrem alten Index; der endgültige Index ist also tatsächlich der index, dekrementiert um eins.
Siehe auch addSeries(), seriesList() und QAbstract3DGraph::hasSeries().
void Q3DBars::releaseAxis(QAbstract3DAxis *axis)
Gibt die Eigentumsrechte an der „ axis “ wieder an den Aufrufer zurück, sofern diese zu diesem Graphen hinzugefügt wurde. Wenn die freigegebene „ axis “ gerade verwendet wird, wird eine neue Standardachse erstellt und als aktiv gesetzt.
Wird die Standardachse freigegeben und später wieder hinzugefügt, verhält sie sich wie jede andere Achse.
Siehe auch „ addAxis()“, „ setValueAxis()“, „ setRowAxis()“ und „ setColumnAxis()“.
void Q3DBars::removeSeries(QBar3DSeries *series)
Entfernt den „ series “ aus dem Diagramm.
Siehe auch „ QAbstract3DGraph::hasSeries()“.
QList<QBar3DSeries *> Q3DBars::seriesList() const
Gibt die Liste der zu diesem Diagramm hinzugefügten Reihen zurück.
Siehe auch „ QAbstract3DGraph::hasSeries()“.
void Q3DBars::setColumnAxis(QCategory3DAxis *axis)
Setzt die Achse der aktiven Spalte auf „ axis “. Ruft implizit die Funktion „ addAxis()“ auf, um die Eigentumsrechte an der Achse auf dieses Diagramm zu übertragen.
Ist ` axis ` null, wird eine temporäre Standardachse ohne Beschriftungen erstellt. Diese temporäre Achse wird gelöscht, 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 Reihe bestimmt die Beschriftungen der Zeilen- und Spaltenachsen, wenn diese nicht explizit für die Achsen festgelegt wurden.
Wenn die angegebene Reihe noch nicht zum Diagramm hinzugefügt wurde, wird sie durch die Festlegung als primäre Reihe implizit zum Diagramm hinzugefügt.
Wird die primäre Reihe selbst aus dem Diagramm entfernt, wird diese Eigenschaft auf den Standardwert zurückgesetzt.
Ist „ series “ null, wird diese Eigenschaft auf den Standardwert zurückgesetzt. Der Standardwert ist die zuerst hinzugefügte Reihe oder Null, wenn dem Diagramm keine Reihen hinzugefügt wurden.
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 die Eigentumsrechte an der Achse auf dieses Diagramm zu übertragen.
Ist ` axis ` null, wird eine temporäre Standardachse ohne Beschriftungen erstellt. Diese temporäre Achse wird gelöscht, wenn eine andere Achse explizit auf dieselbe Ausrichtung gesetzt wird.
Hinweis: Setter -Funktion für die Eigenschaft ` rowAxis`.
Siehe auch „ rowAxis()“, „ addAxis()“ und „ 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.