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.