Q3DSurfaceWidgetItem Class
Die Klasse Q3DSurfaceWidgetItem bietet Methoden zur Darstellung von 3D-Oberflächenplots. Mehr...
Kopfzeile: | #include <Q3DSurfaceWidgetItem> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS GraphsWidgets) target_link_libraries(mytarget PRIVATE Qt6::GraphsWidgets) |
qmake: | QT += graphswidgets |
Vererbungen: | Q3DGraphsWidgetItem |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- Q3DSurfaceWidgetItem ist Teil von Qt Graphs C++ Classes for Widgets.
Eigenschaften
|
Öffentliche Funktionen
Q3DSurfaceWidgetItem(QObject *parent = nullptr) | |
virtual | ~Q3DSurfaceWidgetItem() override |
void | addAxis(QValue3DAxis *axis) |
void | addSeries(QSurface3DSeries *series) |
QList<QValue3DAxis *> | axes() const |
QValue3DAxis * | axisX() const |
QValue3DAxis * | axisY() const |
QValue3DAxis * | axisZ() const |
bool | flipHorizontalGrid() const |
void | releaseAxis(QValue3DAxis *axis) |
void | removeSeries(QSurface3DSeries *series) |
QSurface3DSeries * | selectedSeries() const |
QList<QSurface3DSeries *> | seriesList() const |
void | setAxisX(QValue3DAxis *axis) |
void | setAxisY(QValue3DAxis *axis) |
void | setAxisZ(QValue3DAxis *axis) |
void | setFlipHorizontalGrid(bool flip) |
Signale
void | axisXChanged(QValue3DAxis *axis) |
void | axisYChanged(QValue3DAxis *axis) |
void | axisZChanged(QValue3DAxis *axis) |
void | flipHorizontalGridChanged(bool flip) |
void | selectedSeriesChanged(QSurface3DSeries *series) |
Detaillierte Beschreibung
Diese Klasse ermöglicht es Entwicklern, 3D-Oberflächenplots zu rendern und diese durch freie Drehung der Szene zu betrachten. Die visuellen Eigenschaften der Oberfläche wie Zeichenmodus und Schattierung können über QSurface3DSeries gesteuert werden.
Das Q3DSurfaceWidgetItem unterstützt die Auswahl, indem es eine hervorgehobene Kugel auf dem Datenpunkt anzeigt, auf den der Benutzer mit der linken Maustaste geklickt (wenn der Standard-Eingabe-Handler verwendet wird) oder über QSurface3DSeries ausgewählt hat. Der Auswahlzeiger wird von einer Beschriftung begleitet, die im Standardfall den Wert des Datenpunktes und die Koordinaten des Punktes anzeigt.
Der Wertebereich und das Format der auf der Achse angezeigten Beschriftung können über QValue3DAxis gesteuert werden.
Um das Diagramm zu drehen, halten Sie die rechte Maustaste gedrückt und bewegen Sie die Maus. Das Zoomen erfolgt über das Mausrad. Bei beiden Aktionen wird davon ausgegangen, dass der Standard-Eingabehandler verwendet wird.
Wenn keine Achsen explizit für Q3DSurfaceWidgetItem gesetzt werden, werden temporäre Standardachsen ohne Beschriftung erstellt. Diese Standard-Achsen können über Achsen-Accessors modifiziert werden, aber sobald eine Achse explizit für die Orientierung gesetzt wird, wird die Standard-Achse für diese Orientierung zerstört.
So konstruiert man einen minimalen Q3DSurfaceWidgetItem Graphen
Konstruieren Sie zunächst Q3DSurfaceWidgetItem. Da wir den Graphen in diesem Beispiel als Top-Level-Fenster ausführen, müssen wir das Qt::FramelessWindowHint
Flag, das standardmäßig gesetzt ist, löschen:
QQuickWidget quickWidget; Q3DSurfaceWidgetItem surface; surface.setWidget(&quickWidget); surface.widget()->setMinimumSize(QSize(256, 256));
Jetzt ist Q3DSurfaceWidgetItem bereit, Daten zu empfangen, die gerendert werden sollen. Erstellen Sie Datenelemente, um Werte zu empfangen:
Hinweis: In der neuen Proxy-Serien-Beziehung werden die Daten in Serien gehalten. Damit der Proxy in der Lage ist, Daten hinzuzufügen, zu löschen oder zu bearbeiten, ist es daher erforderlich, zunächst eine Serie zu erstellen.
QSurfaceDataArray data; QSurfaceDataRow dataRow1; QSurfaceDataRow dataRow2;
Versorgen Sie zunächst die Zeilenelemente mit Daten und fügen Sie dann deren Zeiger zum Datenelement hinzu:
dataRow1 << QSurfaceDataItem(0.0f, 0.1f, 0.5f) << QSurfaceDataItem(1.0f, 0.5f, 0.5f); dataRow2 << QSurfaceDataItem(0.0f, 1.8f, 1.0f) << QSurfaceDataItem(1.0f, 1.2f, 1.0f); data << dataRow1 << dataRow2;
Erstellen Sie eine neue Reihe und fügen Sie ihr Daten hinzu:
QSurface3DSeries series; series.dataProxy()->resetArray(data); surface.addSeries(&series);
Abschließend müssen Sie sie sichtbar machen:
surface.widget()->show();
Der gesamte Code, der zum Erstellen und Anzeigen dieses Diagramms benötigt wird, lautet:
#include <QtGraphs> #include <QtGraphsWidgets/q3dsurfacewidgetitem.h> #include <QtWidgets/qapplication.h> int main(int argc, char **argv) { QApplication app(argc, argv); QQuickWidget quickWidget; Q3DSurfaceWidgetItem surface; surface.setWidget(&quickWidget); surface.widget()->setMinimumSize(QSize(256, 256)); QSurfaceDataArray data; QSurfaceDataRow dataRow1; QSurfaceDataRow dataRow2; dataRow1 << QSurfaceDataItem(0.0f, 0.1f, 0.5f) << QSurfaceDataItem(1.0f, 0.5f, 0.5f); dataRow2 << QSurfaceDataItem(0.0f, 1.8f, 1.0f) << QSurfaceDataItem(1.0f, 1.2f, 1.0f); data << dataRow1 << dataRow2; QSurface3DSeries series; series.dataProxy()->resetArray(data); surface.addSeries(&series); surface.widget()->show(); return app.exec(); }
Und das ist das Ergebnis dieser wenigen Codezeilen:
Die Szene kann gedreht und gezoomt werden, und ein Oberflächenpunkt kann ausgewählt werden, um seine Position zu sehen, aber andere Interaktionen sind in diesem minimalen Codebeispiel nicht enthalten. Sie können mehr erfahren, wenn Sie sich mit den mitgelieferten Beispielen vertraut machen, z. B. mit der Oberflächengrafik-Galerie.
Siehe auch Q3DBarsWidgetItem, Q3DScatterWidgetItem, und Qt Graphs C++-Klassen für 3D.
Dokumentation der Eigenschaften
axisX : QValue3DAxis*
Diese Eigenschaft enthält die aktive X-Achse.
Legt axis als aktive x-Achse fest. 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 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 * | axisX() const |
void | setAxisX(QValue3DAxis *axis) |
Notifier-Signal:
void | axisXChanged(QValue3DAxis *axis) |
Siehe auch addAxis() und releaseAxis().
axisY : QValue3DAxis*
Diese Eigenschaft enthält die aktive y-Achse.
Legt axis als die aktive y-Achse fest. 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 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 * | axisY() const |
void | setAxisY(QValue3DAxis *axis) |
Notifier-Signal:
void | axisYChanged(QValue3DAxis *axis) |
Siehe auch addAxis() und releaseAxis().
axisZ : QValue3DAxis*
Diese Eigenschaft enthält die aktive Z-Achse.
Legt axis als die aktive z-Achse fest. 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 und mit einem automatisch angepassten Bereich erstellt.
Diese temporäre Achse wird zerstört, wenn eine andere Achse explizit auf dieselbe Ausrichtung gesetzt wird.
Zugriffsfunktionen:
QValue3DAxis * | axisZ() const |
void | setAxisZ(QValue3DAxis *axis) |
Notifier-Signal:
void | axisZChanged(QValue3DAxis *axis) |
Siehe auch addAxis() und releaseAxis().
flipHorizontalGrid : bool
Diese Eigenschaft legt fest, ob das Gitter der horizontalen Achse im oberen Teil des Diagramms und nicht im unteren Teil angezeigt werden soll.
In einigen Anwendungsfällen wird das horizontale Achsenraster größtenteils von der Oberfläche verdeckt, so dass es sinnvoller sein kann, das horizontale Achsenraster am oberen Rand des Diagramms statt am unteren Rand anzuzeigen. Ein typischer Anwendungsfall hierfür ist die Darstellung von 2D-Spektrogrammen unter Verwendung der orthografischen Projektion mit einem Blickwinkel von oben nach unten.
Wenn false
gewählt wird, werden das horizontale Achsenraster und die Beschriftungen auf dem horizontalen Hintergrund des Diagramms gezeichnet. Bei true
werden das horizontale Achsenraster und die Beschriftungen auf der dem horizontalen Hintergrund gegenüberliegenden Seite des Diagramms gezeichnet. Die Standardeinstellung ist false
.
Zugriffsfunktionen:
bool | flipHorizontalGrid() const |
void | setFlipHorizontalGrid(bool flip) |
Melder-Signal:
void | flipHorizontalGridChanged(bool flip) |
[read-only]
selectedSeries : QSurface3DSeries* const
Diese Eigenschaft enthält die ausgewählte Serie oder null.
Wenn selectionMode MultiSeries
gesetzt ist, enthält diese Eigenschaft die Serie, die den ausgewählten Punkt besitzt.
Zugriffsfunktionen:
QSurface3DSeries * | selectedSeries() const |
Benachrichtigungssignal:
void | selectedSeriesChanged(QSurface3DSeries *series) |
Member Function Dokumentation
[explicit]
Q3DSurfaceWidgetItem::Q3DSurfaceWidgetItem(QObject *parent = nullptr)
Konstruiert einen neuen 3D-Oberflächendiagramm mit dem optionalen parent.
[override virtual noexcept]
Q3DSurfaceWidgetItem::~Q3DSurfaceWidgetItem()
Zerstört die 3D-Oberflächengrafik.
void Q3DSurfaceWidgetItem::addAxis(QValue3DAxis *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(), setAxisX(), setAxisY(), und setAxisZ().
void Q3DSurfaceWidgetItem::addSeries(QSurface3DSeries *series)
Fügt die series zum Diagramm hinzu. Ein Diagramm kann mehrere Reihen enthalten, hat aber nur einen Achsensatz. Wenn die neu hinzugefügte Reihe ein ausgewähltes Element angegeben hat, wird es hervorgehoben und eine vorhandene Auswahl wird gelöscht. Nur eine hinzugefügte Reihe kann eine aktive Auswahl haben.
Siehe auch Q3DGraphsWidgetItem::hasSeries().
QList<QValue3DAxis *> Q3DSurfaceWidgetItem::axes() const
Gibt die Liste aller hinzugefügten Achsen zurück.
Siehe auch addAxis().
void Q3DSurfaceWidgetItem::releaseAxis(QValue3DAxis *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(), setAxisX(), setAxisY(), und setAxisZ().
void Q3DSurfaceWidgetItem::removeSeries(QSurface3DSeries *series)
Entfernt die series aus dem Diagramm.
Siehe auch Q3DGraphsWidgetItem::hasSeries().
QList<QSurface3DSeries *> Q3DSurfaceWidgetItem::seriesList() const
Gibt die Liste der zu diesem Diagramm hinzugefügten Serien zurück.
Siehe auch 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.