QGraphicsView Class
Die Klasse `QGraphicsView` stellt ein Widget zur Darstellung des Inhalts eines ` QGraphicsScene` bereit. Mehr...
| Header: | #include <QGraphicsView> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Erbt von: | QAbstractScrollArea |
Öffentliche Typen
| flags | CacheMode |
| enum | CacheModeFlag { CacheNone, CacheBackground } |
| enum | DragMode { NoDrag, ScrollHandDrag, RubberBandDrag } |
| enum | OptimizationFlag { DontSavePainterState, DontAdjustForAntialiasing, IndirectPainting } |
| flags | OptimizationFlags |
| enum | ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse } |
| enum | ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate } |
Eigenschaften
|
|
Öffentliche Funktionen
| QGraphicsView(QWidget *parent = nullptr) | |
| QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr) | |
| virtual | ~QGraphicsView() |
| Qt::Alignment | alignment() const |
| QBrush | backgroundBrush() const |
| QGraphicsView::CacheMode | cacheMode() const |
| void | centerOn(const QPointF &pos) |
| void | centerOn(const QGraphicsItem *item) |
| void | centerOn(qreal x, qreal y) |
| QGraphicsView::DragMode | dragMode() const |
| void | ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50) |
| void | ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50) |
| void | ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50) |
| void | fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| void | fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| void | fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) |
| QBrush | foregroundBrush() const |
| bool | isInteractive() const |
| bool | isTransformed() const |
| QGraphicsItem * | itemAt(const QPoint &pos) const |
| QGraphicsItem * | itemAt(int x, int y) const |
| QList<QGraphicsItem *> | items() const |
| QList<QGraphicsItem *> | items(const QPoint &pos) const |
| QList<QGraphicsItem *> | items(int x, int y) const |
| QList<QGraphicsItem *> | items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QPainterPath | mapFromScene(const QPainterPath &path) const |
| QPoint | mapFromScene(const QPointF &point) const |
| QPolygon | mapFromScene(const QPolygonF &polygon) const |
| QPolygon | mapFromScene(const QRectF &rect) const |
| QPoint | mapFromScene(qreal x, qreal y) const |
| QPolygon | mapFromScene(qreal x, qreal y, qreal w, qreal h) const |
| QPainterPath | mapToScene(const QPainterPath &path) const |
| QPointF | mapToScene(const QPoint &point) const |
| QPolygonF | mapToScene(const QPolygon &polygon) const |
| QPolygonF | mapToScene(const QRect &rect) const |
| QPointF | mapToScene(int x, int y) const |
| QPolygonF | mapToScene(int x, int y, int w, int h) const |
| QGraphicsView::OptimizationFlags | optimizationFlags() const |
| void | render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio) |
| QPainter::RenderHints | renderHints() const |
| void | resetCachedContent() |
| void | resetTransform() |
| QGraphicsView::ViewportAnchor | resizeAnchor() const |
| void | rotate(qreal angle) |
| QRect | rubberBandRect() const |
| Qt::ItemSelectionMode | rubberBandSelectionMode() const |
| void | scale(qreal sx, qreal sy) |
| QGraphicsScene * | scene() const |
| QRectF | sceneRect() const |
| void | setAlignment(Qt::Alignment alignment) |
| void | setBackgroundBrush(const QBrush &brush) |
| void | setCacheMode(QGraphicsView::CacheMode mode) |
| void | setDragMode(QGraphicsView::DragMode mode) |
| void | setForegroundBrush(const QBrush &brush) |
| void | setInteractive(bool allowed) |
| void | setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true) |
| void | setOptimizationFlags(QGraphicsView::OptimizationFlags flags) |
| void | setRenderHint(QPainter::RenderHint hint, bool enabled = true) |
| void | setRenderHints(QPainter::RenderHints hints) |
| void | setResizeAnchor(QGraphicsView::ViewportAnchor anchor) |
| void | setRubberBandSelectionMode(Qt::ItemSelectionMode mode) |
| void | setScene(QGraphicsScene *scene) |
| void | setSceneRect(const QRectF &rect) |
| void | setSceneRect(qreal x, qreal y, qreal w, qreal h) |
| void | setTransform(const QTransform &matrix, bool combine = false) |
| void | setTransformationAnchor(QGraphicsView::ViewportAnchor anchor) |
| void | setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode) |
| void | shear(qreal sh, qreal sv) |
| QTransform | transform() const |
| QGraphicsView::ViewportAnchor | transformationAnchor() const |
| void | translate(qreal dx, qreal dy) |
| QTransform | viewportTransform() const |
| QGraphicsView::ViewportUpdateMode | viewportUpdateMode() const |
Neu implementierte öffentliche Funktionen
| virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) const override |
| virtual QSize | sizeHint() const override |
Öffentliche Slots
| void | invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers) |
| void | updateScene(const QList<QRectF> &rects) |
| void | updateSceneRect(const QRectF &rect) |
Signale
| void | rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint) |
Geschützte Funktionen
| virtual void | drawBackground(QPainter *painter, const QRectF &rect) |
| virtual void | drawForeground(QPainter *painter, const QRectF &rect) |
Neu implementierte geschützte Funktionen
| virtual void | contextMenuEvent(QContextMenuEvent *event) override |
| virtual void | dragEnterEvent(QDragEnterEvent *event) override |
| virtual void | dragLeaveEvent(QDragLeaveEvent *event) override |
| virtual void | dragMoveEvent(QDragMoveEvent *event) override |
| virtual void | dropEvent(QDropEvent *event) override |
| virtual bool | event(QEvent *event) override |
| virtual void | focusInEvent(QFocusEvent *event) override |
| virtual bool | focusNextPrevChild(bool next) override |
| virtual void | focusOutEvent(QFocusEvent *event) override |
| virtual void | inputMethodEvent(QInputMethodEvent *event) override |
| virtual void | keyPressEvent(QKeyEvent *event) override |
| virtual void | keyReleaseEvent(QKeyEvent *event) override |
| virtual void | mouseDoubleClickEvent(QMouseEvent *event) override |
| virtual void | mouseMoveEvent(QMouseEvent *event) override |
| virtual void | mousePressEvent(QMouseEvent *event) override |
| virtual void | mouseReleaseEvent(QMouseEvent *event) override |
| virtual void | paintEvent(QPaintEvent *event) override |
| virtual void | resizeEvent(QResizeEvent *event) override |
| virtual void | scrollContentsBy(int dx, int dy) override |
| virtual void | showEvent(QShowEvent *event) override |
| virtual bool | viewportEvent(QEvent *event) override |
| virtual void | wheelEvent(QWheelEvent *event) override |
Geschützte Slots
| virtual void | setupViewport(QWidget *widget) override |
Ausführliche Beschreibung
QGraphicsView visualisiert den Inhalt eines „ QGraphicsScene “ in einem scrollbaren Ansichtsbereich. Informationen zum Erstellen einer Szene mit geometrischen Elementen finden Sie in der Dokumentation unter QGraphicsScene. QGraphicsView ist Teil des Graphics View Frameworks.
Um eine Szene darzustellen, erstellen Sie zunächst ein QGraphicsView-Objekt und übergeben dabei die Adresse der Szene, die Sie darstellen möchten, an den Konstruktor von QGraphicsView. Alternativ können Sie setScene() aufrufen, um die Szene zu einem späteren Zeitpunkt festzulegen. Nachdem Sie ` show()` aufgerufen haben, scrollt die Ansicht standardmäßig zur Mitte der Szene und zeigt alle Elemente an, die an dieser Stelle sichtbar sind. Zum Beispiel:
QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene);
view.show();Sie können explizit zu einer beliebigen Position in der Szene scrollen, indem Sie die Bildlaufleisten verwenden oder ` centerOn()` aufrufen. Wenn Sie einen Punkt an ` centerOn()` übergeben, scrollt `QGraphicsView` seinen Ansichtsbereich so, dass der Punkt in der Ansicht zentriert ist. Es wird eine Überladung zum Scrollen zu einem „ QGraphicsItem “ bereitgestellt; in diesem Fall sorgt QGraphicsView dafür, dass die Mitte des Elements in der Ansicht zentriert wird. Wenn Sie lediglich sicherstellen möchten, dass ein bestimmter Bereich sichtbar ist (aber nicht unbedingt zentriert), können Sie stattdessen ` ensureVisible()` aufrufen.
QGraphicsView kann verwendet werden, um eine gesamte Szene oder nur Teile davon darzustellen. Der Darstellungsbereich wird standardmäßig automatisch ermittelt, wenn die Ansicht zum ersten Mal angezeigt wird (durch Aufruf von ` QGraphicsScene::itemsBoundingRect()`). Um das Rechteck des Darstellungsbereichs selbst festzulegen, können Sie ` setSceneRect()` aufrufen. Dadurch werden die Bereiche der Bildlaufleisten entsprechend angepasst. Beachten Sie, dass die Szene zwar eine praktisch unbegrenzte Größe unterstützt, der Bereich der Bildlaufleisten jedoch niemals den Bereich einer Ganzzahl (INT_MIN, INT_MAX) überschreiten wird.
QGraphicsView visualisiert die Szene durch den Aufruf von ` render()`. Standardmäßig werden die Elemente mithilfe eines regulären ` QPainter` und unter Verwendung der Standard-Render-Hinweise in den Viewport gezeichnet. Um die Standard-Render-Hinweise zu ändern, die QGraphicsView beim Zeichnen von Elementen an ` QPainter ` übergibt, können Sie ` setRenderHints()` aufrufen.
Standardmäßig stellt QGraphicsView ein reguläres ` QWidget ` für das Viewport-Widget bereit. Sie können auf dieses Widget zugreifen, indem Sie ` viewport()` aufrufen, oder Sie können es durch Aufruf von ` setViewport()` ersetzen. Um mit OpenGL zu rendern, rufen Sie einfach `setViewport(new QOpenGLWidget)` auf. QGraphicsView übernimmt die Eigentümerschaft am Viewport-Widget.
QGraphicsView unterstützt affine Transformationen mithilfe von ` QTransform`. Sie können entweder eine Matrix an ` setTransform()` übergeben oder eine der Hilfsfunktionen ` rotate()`, ` scale()`, ` translate()` oder ` shear()` aufrufen. Die beiden häufigsten Transformationen sind die Skalierung, die zur Umsetzung des Zoomens verwendet wird, und die Rotation. QGraphicsView hält den Mittelpunkt der Ansicht während einer Transformation fest. Aufgrund der Szenenausrichtung (setAlignment()) hat das Verschieben der Ansicht keine visuellen Auswirkungen.
Sie können mit den Elementen in der Szene mithilfe der Maus und der Tastatur interagieren. QGraphicsView wandelt Maus- und Tastenereignisse in Szenenereignisse um (Ereignisse, die von ` QGraphicsSceneEvent` erben) und leitet sie an die visualisierte Szene weiter. Letztendlich ist es das jeweilige Element, das die Ereignisse verarbeitet und darauf reagiert. Wenn Sie beispielsweise auf ein auswählbares Element klicken, teilt das Element der Szene in der Regel mit, dass es ausgewählt wurde, und zeichnet sich selbst neu, um ein Auswahlrechteck anzuzeigen. Wenn Sie die Maus klicken und ziehen, um ein verschiebbares Element zu bewegen, ist es ebenfalls das Element, das die Mausbewegungen verarbeitet und sich selbst verschiebt. Die Elementinteraktion ist standardmäßig aktiviert und kann durch den Aufruf von ` setInteractive()` umgeschaltet werden.
Sie können auch eine eigene, benutzerdefinierte Szeneninteraktion bereitstellen, indem Sie eine Unterklasse von `QGraphicsView` erstellen und die Maus- und Tastenereignis-Handler neu implementieren. Um die programmgesteuerte Interaktion mit Elementen in der Ansicht zu vereinfachen, stellt QGraphicsView die Zuordnungsfunktionen ` mapToScene()` und ` mapFromScene()` sowie die Element-Zugriffsfunktionen ` items()` und ` itemAt()` bereit. Mit diesen Funktionen können Sie Punkte, Rechtecke, Polygone und Pfade zwischen Ansichts- und Szenenkoordinaten zuordnen und Elemente in der Szene anhand von Ansichts-Koordinaten finden.
Bei Verwendung eines „ QOpenGLWidget “ als Viewport wird stereoskopisches Rendering unterstützt. Dies erfolgt nach dem gleichen Muster wie bei „ QOpenGLWidget::paintGL “. Um diese Funktion zu aktivieren, setzen Sie das Flag „ QSurfaceFormat::StereoBuffers “. Aufgrund der internen Handhabung dieses Flags müssen Sie das Flag „ QSurfaceFormat::StereoBuffers “ global setzen, bevor das Fenster mit „ QSurfaceFormat::setDefaultFormat()“ erstellt wird. Wenn das Flag aktiviert ist und Hardwareunterstützung für stereoskopisches Rendering vorhanden ist, werden „ drawBackground()“ und „ drawForeground()“ in jedem Frame zweimal ausgelöst. Rufen Sie „ QOpenGLWidget::currentTargetBuffer()“ auf, um abzufragen, in welchen Puffer gerade gezeichnet wird.

Hinweis: Die Verwendung eines OpenGL-Viewports schränkt die Einsatzmöglichkeiten von ` QGraphicsProxyWidget` ein. Nicht alle Kombinationen aus Widgets und Stilen können bei einer solchen Konfiguration unterstützt werden. Sie sollten Ihre Benutzeroberfläche sorgfältig testen und die erforderlichen Anpassungen vornehmen.
Siehe auch QGraphicsScene, QGraphicsItem und QGraphicsSceneEvent.
Dokumentation zu Mitgliedstypen
enum QGraphicsView::CacheModeFlag
flags QGraphicsView::CacheMode
Diese Enumeration beschreibt die Flags, die Sie für den Cache-Modus eines „ QGraphicsView “ setzen können.
| Konstante | Wert | Beschreibung |
|---|---|---|
QGraphicsView::CacheNone | 0x0 | Alle Zeichnungen erfolgen direkt im Ansichtsfenster. |
QGraphicsView::CacheBackground | 0x1 | Der Hintergrund wird zwischengespeichert. Dies betrifft sowohl benutzerdefinierte Hintergründe als auch Hintergründe, die auf der Eigenschaft „ backgroundBrush “ basieren. Wenn dieses Flag aktiviert ist, weist „ QGraphicsView “ eine Pixmap mit der vollen Größe des Ansichtsfensters zu. |
Der Typ „CacheMode“ ist ein typedef für QFlags<CacheModeFlag>. Er speichert eine OR-Kombination von CacheModeFlag-Werten.
Siehe auch ` cacheMode`.
enum QGraphicsView::DragMode
Diese Enumeration beschreibt die Standardaktion der Ansicht, wenn die Maustaste gedrückt und die Maus über den Ansichtsbereich gezogen wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QGraphicsView::NoDrag | 0 | Es geschieht nichts; das Mausereignis wird ignoriert. |
QGraphicsView::ScrollHandDrag | 1 | Der Cursor verwandelt sich in eine zeigende Hand, und durch Ziehen der Maus werden die Bildlaufleisten verschoben. Dieser Modus funktioniert sowohl im interaktiven („ interactive “) als auch im nicht- n Modus. |
QGraphicsView::RubberBandDrag | 2 | Es erscheint ein Gummiband. Durch Ziehen der Maus wird die Geometrie des Gummibands festgelegt, und alle vom Gummiband abgedeckten Elemente werden ausgewählt. Dieser Modus ist für nicht-interaktive Ansichten deaktiviert. |
Siehe auch „ dragMode “ und „ QGraphicsScene::setSelectionArea()“.
enum QGraphicsView::OptimizationFlag
flags QGraphicsView::OptimizationFlags
Diese Enumeration beschreibt Flags, die Sie aktivieren können, um die Darstellungsleistung in QGraphicsView zu verbessern. Standardmäßig ist keines dieser Flags gesetzt. Beachten Sie, dass das Setzen eines Flags in der Regel einen Nebeneffekt nach sich zieht, der je nach Darstellungsgerät und Plattform variieren kann.
| Konstante | Wert | Beschreibung |
|---|---|---|
QGraphicsView::DontSavePainterState | 0x1 | Beim Rendern schützt „ QGraphicsView “ den Zustand des Painters (siehe QPainter::save()) beim Rendern des Hintergrunds oder Vordergrunds sowie beim Rendern jedes einzelnen Elements. Dadurch können Sie den Painter in einem geänderten Zustand belassen (d. h., Sie können QPainter::setPen() oder QPainter::setBrush() aufrufen, ohne den Zustand nach dem Zeichnen wiederherzustellen). Wenn die Elemente den Zustand jedoch durchgängig wiederherstellen, sollten Sie dieses Flag aktivieren, um zu verhindern, dass „ QGraphicsView “ dasselbe tut. |
QGraphicsView::DontAdjustForAntialiasing | 0x2 | Deaktiviert die automatische Antialiasing-Anpassung von freiliegenden Bereichen durch ` QGraphicsView`. Elemente, die an den Rändern ihres ` QGraphicsItem::boundingRect()` antialiasierte Linien rendern, können dazu führen, dass Teile der Linie außerhalb des Bereichs gerendert werden. Um Renderartefakte zu vermeiden, erweitert ` QGraphicsView ` alle freiliegenden Bereiche um 2 Pixel in alle Richtungen. Wenn Sie dieses Flag aktivieren, führt „ QGraphicsView “ diese Anpassungen nicht mehr durch, wodurch die Bereiche, die neu gezeichnet werden müssen, minimiert werden, was die Leistung verbessert. Ein häufiger Nebeneffekt ist, dass Elemente, die mit Antialiasing gezeichnet werden, beim Verschieben Mal-Spuren in der Szene hinterlassen können. |
QGraphicsView::IndirectPainting | 0x4 | Seit Qt 4.6 wird der alte Zeichenalgorithmus wiederhergestellt, der QGraphicsView::drawItems() und QGraphicsScene::drawItems() aufruft. Dies dient ausschließlich der Kompatibilität mit altem Code. |
Der Typ „OptimizationFlags“ ist ein typedef für „QFlags<OptimizationFlag>“. Er speichert eine OR-Kombination von „OptimizationFlag“-Werten.
enum QGraphicsView::ViewportAnchor
Diese Enums beschreiben die möglichen Anker, die „ QGraphicsView “ verwenden kann, wenn der Benutzer die Größe der Ansicht ändert oder wenn die Ansicht transformiert wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QGraphicsView::NoAnchor | 0 | Kein Anker, d. h., die Ansicht belässt die Position der Szene unverändert. |
QGraphicsView::AnchorViewCenter | 1 | Der Szenenpunkt in der Mitte der Ansicht wird als Anker verwendet. |
QGraphicsView::AnchorUnderMouse | 2 | Der Punkt unter der Maus wird als Anker verwendet. |
Siehe auch resizeAnchor und transformationAnchor.
enum QGraphicsView::ViewportUpdateMode
Diese Enumeration beschreibt, wie „ QGraphicsView “ seinen Ansichtsbereich aktualisiert, wenn sich der Inhalt der Szene ändert oder freigegeben wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QGraphicsView::FullViewportUpdate | 0 | Wenn sich ein sichtbarer Teil der Szene ändert oder erneut sichtbar wird, aktualisiert „ QGraphicsView “ den gesamten Ansichtsbereich. Dieser Ansatz ist am schnellsten, wenn „ QGraphicsView “ mehr Zeit damit verbringt, zu ermitteln, was gezeichnet werden soll, als mit dem Zeichnen selbst (z. B. wenn sehr viele kleine Elemente wiederholt aktualisiert werden). Dies ist der bevorzugte Aktualisierungsmodus für Ansichtsfenster, die keine teilweisen Aktualisierungen unterstützen, wie z. B. „ QOpenGLWidget “, sowie für Ansichtsfenster, bei denen die Scroll-Optimierung deaktiviert werden muss. |
QGraphicsView::MinimalViewportUpdate | 1 | QGraphicsView ermittelt den kleinsten Bereich des Ansichtsfensters, der neu gezeichnet werden muss, und minimiert so den Zeitaufwand für das Zeichnen, indem das Neuzufertigen von Bereichen vermieden wird, die sich nicht verändert haben. Dies ist der Standardmodus von QGraphicsView. Obwohl dieser Ansatz im Allgemeinen die beste Leistung bietet, kann es bei vielen kleinen sichtbaren Änderungen in der Szene vorkommen, dass QGraphicsView letztendlich mehr Zeit damit verbringt, den minimalsten Ansatz zu finden, als mit dem Zeichnen selbst. |
QGraphicsView::SmartViewportUpdate | 2 | QGraphicsView versucht, einen optimalen Aktualisierungsmodus zu finden, indem die Bereiche analysiert werden, die neu gezeichnet werden müssen. |
QGraphicsView::BoundingRectViewportUpdate | 4 | Das Begrenzungsrechteck aller Änderungen im Ansichtsfenster wird neu gezeichnet. Dieser Modus hat den Vorteil, dass „ QGraphicsView “ nur einen Bereich nach Änderungen durchsucht, wodurch der Zeitaufwand für die Ermittlung der neu zu zeichnenden Bereiche minimiert wird. Der Nachteil besteht darin, dass auch Bereiche, die sich nicht geändert haben, neu gezeichnet werden müssen. |
QGraphicsView::NoViewportUpdate | 3 | QGraphicsView aktualisiert seinen Ansichtsbereich niemals, wenn sich die Szene ändert; es wird erwartet, dass der Benutzer alle Aktualisierungen selbst steuert. Dieser Modus deaktiviert alle (potenziell langsamen) Sichtbarkeitstests für Elemente in „ QGraphicsView “ und eignet sich für Szenen, die entweder eine feste Bildrate erfordern oder bei denen der Ansichtsbereich anderweitig extern aktualisiert wird. |
Siehe auch viewportUpdateMode.
Dokumentation zu den Eigenschaften
alignment : Qt::Alignment
Diese Eigenschaft legt die Ausrichtung der Szene in der Ansicht fest, wenn die gesamte Szene sichtbar ist.
Wenn die gesamte Szene in der Ansicht sichtbar ist (d. h. es sind keine Bildlaufleisten sichtbar), bestimmt die Ausrichtung der Ansicht, wo die Szene in der Ansicht gerendert wird. Wenn die Ausrichtung beispielsweise auf „ Qt::AlignCenter “ gesetzt ist (was der Standardwert ist), wird die Szene in der Ansicht zentriert, und wenn die Ausrichtung auf „(Qt::AlignLeft | Qt::AlignTop)“ gesetzt ist, wird die Szene in der oberen linken Ecke der Ansicht gerendert.
Zugriffsfunktionen:
| Qt::Alignment | alignment() const |
| void | setAlignment(Qt::Alignment alignment) |
backgroundBrush : QBrush
Diese Eigenschaft enthält den Hintergrundpinsel der Szene.
Diese Eigenschaft legt den Hintergrundpinsel für die Szene in dieser Ansicht fest. Sie dient dazu, den eigenen Hintergrund der Szene zu überschreiben, und definiert das Verhalten von ` drawBackground()`. Um eine benutzerdefinierte Hintergrundzeichnung für diese Ansicht bereitzustellen, können Sie stattdessen ` drawBackground()` neu implementieren.
Standardmäßig enthält diese Eigenschaft einen Pinsel mit dem Muster „ Qt::NoBrush “.
Zugriffsfunktionen:
| QBrush | backgroundBrush() const |
| void | setBackgroundBrush(const QBrush &brush) |
Siehe auch „ QGraphicsScene::backgroundBrush “ und „ foregroundBrush “.
cacheMode : CacheMode
Diese Eigenschaft gibt an, welche Teile der Ansicht zwischengespeichert werden
QGraphicsView kann vorgerenderte Inhalte in einem „ QPixmap “ zwischenspeichern, der anschließend in den Ansichtsbereich gezeichnet wird. Der Zweck einer solchen Zwischenspeicherung besteht darin, die gesamte Renderzeit für Bereiche zu verkürzen, deren Rendering viel Zeit in Anspruch nimmt. Beispielsweise können Hintergründe mit Texturen, Farbverläufen und Alpha-Mischungen beim Rendern merklich langsam sein, insbesondere bei einer transformierten Ansicht. Das Flag „ CacheBackground “ aktiviert das Zwischenspeichern des Hintergrunds der Ansicht. Beispiel:
QGraphicsView view;
view.setBackgroundBrush(QImage(":/images/backgroundtile.png"));
view.setCacheMode(QGraphicsView::CacheBackground);Der Cache wird bei jeder Transformation der Ansicht ungültig gemacht. Beim Scrollen ist jedoch nur eine teilweise Ungültigmachung erforderlich.
Standardmäßig wird nichts zwischengespeichert.
Zugriffsfunktionen:
| QGraphicsView::CacheMode | cacheMode() const |
| void | setCacheMode(QGraphicsView::CacheMode mode) |
Siehe auch „ resetCachedContent()“ und „ QPixmapCache “.
dragMode : DragMode
Diese Eigenschaft legt das Verhalten beim Ziehen der Maus über die Szene fest, während die linke Maustaste gedrückt gehalten wird.
Diese Eigenschaft definiert, was geschehen soll, wenn der Benutzer auf den Hintergrund der Szene klickt und die Maus zieht (z. B. das Scrollen des Inhalts des Ansichtsfensters mit einem Zeigefinger-Cursor oder das Auswählen mehrerer Elemente mit einem Gummiband). Der Standardwert „ NoDrag “ führt zu keiner Aktion.
Dieses Verhalten wirkt sich nur auf Mausklicks aus, die nicht von einem Element verarbeitet werden. Sie können ein benutzerdefiniertes Verhalten festlegen, indem Sie eine Unterklasse von ` QGraphicsView ` erstellen und die Methode ` mouseMoveEvent()` neu implementieren.
Zugriffsfunktionen:
| QGraphicsView::DragMode | dragMode() const |
| void | setDragMode(QGraphicsView::DragMode mode) |
foregroundBrush : QBrush
Diese Eigenschaft enthält den Vordergrundpinsel der Szene.
Diese Eigenschaft legt den Vordergrundpinsel für die Szene in dieser Ansicht fest. Sie dient dazu, den eigenen Vordergrund der Szene zu überschreiben, und definiert das Verhalten von ` drawForeground()`. Um für diese Ansicht eine benutzerdefinierte Vordergrundzeichnung bereitzustellen, können Sie stattdessen ` drawForeground()` neu implementieren.
Standardmäßig enthält diese Eigenschaft einen Pinsel mit dem Muster „ Qt::NoBrush “.
Zugriffsfunktionen:
| QBrush | foregroundBrush() const |
| void | setForegroundBrush(const QBrush &brush) |
Siehe auch „ QGraphicsScene::foregroundBrush “ und „ backgroundBrush “.
interactive : bool
Diese Eigenschaft legt fest, ob die Ansicht eine Interaktion mit der Szene zulässt.
Ist diese Option aktiviert, ist diese Ansicht so eingestellt, dass eine Interaktion mit der Szene möglich ist. Andernfalls lässt diese Ansicht keine Interaktion zu, und alle Maus- oder Tastenereignisse werden ignoriert (d. h., sie verhält sich wie eine schreibgeschützte Ansicht).
Standardmäßig ist diese Eigenschaft auf „ true “ gesetzt.
Zugriffsfunktionen:
| bool | isInteractive() const |
| void | setInteractive(bool allowed) |
optimizationFlags : OptimizationFlags
Optionen, mit denen sich die Leistung von „ QGraphicsView “ optimieren lässt.
QGraphicsView xml-ph-0000@deepl.internal nutzt Clipping, zusätzliche Anpassungen der Begrenzungsrechtecke und bestimmte andere Hilfsmittel, um die Renderqualität und Leistung für typische Grafikszenen zu verbessern. Je nach Zielplattform, Szene und verwendetem Viewport können einige dieser Vorgänge jedoch die Leistung beeinträchtigen.
Die Auswirkungen variieren je nach Flag; Einzelheiten finden Sie in der Dokumentation zu „ OptimizationFlags “.
Standardmäßig sind keine Optimierungsflags aktiviert.
Zugriffsfunktionen:
| QGraphicsView::OptimizationFlags | optimizationFlags() const |
| void | setOptimizationFlags(QGraphicsView::OptimizationFlags flags) |
Siehe auch setOptimizationFlag().
renderHints : QPainter::RenderHints
Diese Eigenschaft enthält die Standard-Render-Hinweise für die Ansicht
Diese Hinweise werden verwendet, um „ QPainter “ zu initialisieren, bevor jedes sichtbare Element gezeichnet wird. „ QPainter “ nutzt Render-Hinweise, um Rendering-Funktionen wie Anti-Aliasing und die glatte Pixmap-Transformation zu aktivieren oder zu deaktivieren.
QPainter::TextAntialiasing ist standardmäßig aktiviert.
Beispiel:
QGraphicsScene scene;
scene.addRect(QRectF(-10, -10, 20, 20));
QGraphicsView view(&scene);
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view.show();Zugriffsfunktionen:
| QPainter::RenderHints | renderHints() const |
| void | setRenderHints(QPainter::RenderHints hints) |
resizeAnchor : ViewportAnchor
Wie die Ansicht die Szene positionieren soll, wenn die Größe der Ansicht geändert wird.
QGraphicsView Diese Eigenschaft wird verwendet, um zu bestimmen, wie die Szene im Ansichtsfenster positioniert werden soll, wenn sich die Größe des Ansichtsfenster-Widgets ändert. Das Standardverhalten „ NoAnchor “ lässt die Position der Szene während einer Größenänderung unverändert; die obere linke Ecke der Ansicht erscheint während der Größenänderung als verankert.
Beachten Sie, dass die Wirkung dieser Eigenschaft nur dann spürbar ist, wenn nur ein Teil der Szene sichtbar ist (d. h. wenn Bildlaufleisten vorhanden sind). Andernfalls, wenn die gesamte Szene in die Ansicht passt, verwendet „ QGraphicsScene “ die Ausrichtung der Ansicht, um die Szene in der Ansicht zu positionieren.
Zugriffsfunktionen:
| QGraphicsView::ViewportAnchor | resizeAnchor() const |
| void | setResizeAnchor(QGraphicsView::ViewportAnchor anchor) |
Siehe auch „alignment“ und „ transformationAnchor “.
rubberBandSelectionMode : Qt::ItemSelectionMode
Diese Eigenschaft legt das Verhalten bei der Auswahl von Elementen mit einem „Gummiband“-Auswahlrechteck fest.
Diese Eigenschaft legt fest, wie Elemente bei Verwendung des Drag-Modus „ RubberBandDrag “ ausgewählt werden.
Der Standardwert ist „ Qt::IntersectsItemShape “; alle Elemente, deren Form sich mit dem Gummiband überschneidet oder von diesem umschlossen wird, werden ausgewählt.
Zugriffsfunktionen:
| Qt::ItemSelectionMode | rubberBandSelectionMode() const |
| void | setRubberBandSelectionMode(Qt::ItemSelectionMode mode) |
Siehe auch „ dragMode“ , „ items()“ und „ rubberBandRect()“.
sceneRect : QRectF
Diese Eigenschaft enthält den Bereich der Szene, der von dieser Ansicht dargestellt wird.
Das Szenenrechteck definiert die Ausdehnung der Szene; im Falle der Ansicht bedeutet dies den Bereich der Szene, den Sie mithilfe der Bildlaufleisten durchblättern können.
Wenn diese Eigenschaft nicht festgelegt ist oder ein Null QRectF festgelegt ist, hat sie denselben Wert wie „ QGraphicsScene::sceneRect “ und ändert sich mit „ QGraphicsScene::sceneRect “. Andernfalls wird das Szenenrechteck der Ansicht nicht von der Szene beeinflusst.
Beachten Sie, dass die Szene zwar eine praktisch unbegrenzte Größe unterstützt, der Bereich der Bildlaufleisten jedoch niemals den Bereich einer Ganzzahl (INT_MIN, INT_MAX) überschreitet. Wenn die Szene größer ist als die Werte der Bildlaufleisten, können Sie stattdessen translate() verwenden, um durch die Szene zu navigieren.
Standardmäßig enthält diese Eigenschaft ein Rechteck am Ursprung mit der Breite und Höhe Null.
Zugriffsfunktionen:
| QRectF | sceneRect() const |
| void | setSceneRect(const QRectF &rect) |
| void | setSceneRect(qreal x, qreal y, qreal w, qreal h) |
Siehe auch ` QGraphicsScene::sceneRect`.
transformationAnchor : ViewportAnchor
wie die Ansicht die Szene während Transformationen positionieren soll.
QGraphicsView Diese Eigenschaft wird verwendet, um zu bestimmen, wie die Szene im Ansichtsfenster positioniert wird, wenn sich die Transformationsmatrix ändert und das Koordinatensystem der Ansicht transformiert wird. Das Standardverhalten „ AnchorViewCenter “ stellt sicher, dass der Szenenpunkt in der Mitte der Ansicht während Transformationen unverändert bleibt (z. B. dreht sich die Szene bei einer Drehung scheinbar um den Mittelpunkt der Ansicht).
Beachten Sie, dass die Wirkung dieser Eigenschaft nur dann spürbar ist, wenn nur ein Teil der Szene sichtbar ist (d. h. wenn Bildlaufleisten vorhanden sind). Andernfalls, wenn die gesamte Szene in die Ansicht passt, verwendet „ QGraphicsScene “ die Ausrichtung der Ansicht, um die Szene in der Ansicht zu positionieren.
Zugriffsfunktionen:
| QGraphicsView::ViewportAnchor | transformationAnchor() const |
| void | setTransformationAnchor(QGraphicsView::ViewportAnchor anchor) |
Siehe auch „alignment“ und „ resizeAnchor “.
viewportUpdateMode : ViewportUpdateMode
wie der Viewport seinen Inhalt aktualisieren soll.
QGraphicsView Diese Eigenschaft wird verwendet, um zu entscheiden, wie Bereiche der Szene aktualisiert werden sollen, die erneut gerendert oder geändert wurden. In der Regel müssen Sie diese Eigenschaft nicht ändern, aber es gibt einige Fälle, in denen dies die Rendering-Leistung verbessern kann. Weitere Einzelheiten finden Sie in der Dokumentation zu „ ViewportUpdateMode “.
Der Standardwert ist „ MinimalViewportUpdate “, wobei „ QGraphicsView “ bei einer Änderung des Inhalts einen möglichst kleinen Bereich des Viewports aktualisiert.
Zugriffsfunktionen:
| QGraphicsView::ViewportUpdateMode | viewportUpdateMode() const |
| void | setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode) |
Siehe auch „ ViewportUpdateMode “ und „ cacheMode “.
Dokumentation zu den Mitgliedsfunktionen
QGraphicsView::QGraphicsView(QWidget *parent = nullptr)
Erstellt ein `QGraphicsView`-Objekt. ` parent ` wird an den Konstruktor von ` QWidget` übergeben.
QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)
Erstellt ein `QGraphicsView`-Objekt und legt die darzustellende Szene auf ` scene` fest. ` parent ` wird an den Konstruktor von ` QWidget` übergeben.
[virtual noexcept] QGraphicsView::~QGraphicsView()
Löst das Objekt „ QGraphicsView “ auf.
void QGraphicsView::centerOn(const QPointF &pos)
Blättert den Inhalt des Ansichtsbereichs, um sicherzustellen, dass der Szenenkoordinaten pos, in der Ansicht zentriert ist.
Da pos eine Gleitkommakoordinate ist und die Bildlaufleisten mit ganzzahligen Koordinaten arbeiten, handelt es sich bei der Zentrierung lediglich um eine Annäherung.
Hinweis: Befindet sich das Element nahe am Rand oder außerhalb des Rahmens, ist eszwar in der Ansicht sichtbar, jedoch nicht zentriert.
Siehe auch ` ensureVisible()`.
void QGraphicsView::centerOn(const QGraphicsItem *item)
Blättert den Inhalt des Ansichtsbereichs, um sicherzustellen, dass „ item “ in der Ansicht zentriert ist.
Dies ist eine überladene Funktion.
Siehe auch ` ensureVisible()`.
void QGraphicsView::centerOn(qreal x, qreal y)
Diese Funktion dient der Vereinfachung. Sie entspricht dem Aufruf von centerOn(QPointF(x, y)).
Dies ist eine überladene Funktion.
[override virtual protected] void QGraphicsView::contextMenuEvent(QContextMenuEvent *event)
Implementiert: QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e).
[override virtual protected] void QGraphicsView::dragEnterEvent(QDragEnterEvent *event)
Umsetzt: ` QAbstractScrollArea::dragEnterEvent` (`QDragEnterEvent *event`).
[override virtual protected] void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)
Implementiert: ` QAbstractScrollArea::dragLeaveEvent` (`QDragLeaveEvent *event`).
[override virtual protected] void QGraphicsView::dragMoveEvent(QDragMoveEvent *event)
Umsetzt: ` QAbstractScrollArea::dragMoveEvent` (`QDragMoveEvent *event`).
[virtual protected] void QGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)
Zeichnet den Hintergrund der Szene mithilfe von ` painter`, bevor Elemente und der Vordergrund gezeichnet werden. Implementieren Sie diese Funktion neu, um einen benutzerdefinierten Hintergrund für diese Ansicht bereitzustellen.
Wenn Sie lediglich eine Farbe, eine Textur oder einen Farbverlauf für den Hintergrund festlegen möchten, können Sie stattdessen ` setBackgroundBrush()` aufrufen.
Das Zeichnen erfolgt ausschließlich in Szenenkoordinaten. ` rect ` ist das sichtbare Rechteck.
Die Standardimplementierung füllt ` rect ` unter Verwendung des ` backgroundBrush` der Ansicht. Ist kein solcher Pinsel definiert (Standard), wird stattdessen die Funktion `drawBackground()` der Szene aufgerufen.
Siehe auch ` drawForeground()` und ` QGraphicsScene::drawBackground()`.
[virtual protected] void QGraphicsView::drawForeground(QPainter *painter, const QRectF &rect)
Zeichnet den Vordergrund der Szene mithilfe von ` painter`, nachdem der Hintergrund und alle Elemente gezeichnet wurden. Implementieren Sie diese Funktion neu, um einen benutzerdefinierten Vordergrund für diese Ansicht bereitzustellen.
Wenn Sie lediglich eine Farbe, eine Textur oder einen Farbverlauf für den Vordergrund festlegen möchten, können Sie stattdessen ` setForegroundBrush()` aufrufen.
Das Zeichnen erfolgt ausschließlich in Szenenkoordinaten. ` rect ` ist das sichtbare Rechteck.
Die Standardimplementierung füllt ` rect ` unter Verwendung des ` foregroundBrush` der Ansicht. Ist kein solcher Pinsel definiert (Standardeinstellung), wird stattdessen die Funktion `drawForeground()` der Szene aufgerufen.
Siehe auch ` drawBackground()` und ` QGraphicsScene::drawForeground()`.
[override virtual protected] void QGraphicsView::dropEvent(QDropEvent *event)
Implementiert: ` QAbstractScrollArea::dropEvent(QDropEvent *event)`.
void QGraphicsView::ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)
Blättert den Inhalt des Ansichtsbereichs so, dass das Szenenrechteck rect sichtbar ist, wobei die Ränder in Pixeln durch xmargin und ymargin festgelegt werden. Wenn das angegebene Rechteck nicht erreicht werden kann, wird der Inhalt zur nächstgelegenen gültigen Position geblättert. Der Standardwert für beide Ränder beträgt 50 Pixel.
Siehe auch centerOn().
void QGraphicsView::ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)
Blättert den Inhalt des Ansichtsbereichs so, dass der Mittelpunkt von `item item ` sichtbar ist, wobei die Ränder in Pixeln durch ` xmargin ` und ` ymargin` festgelegt werden. Kann der angegebene Punkt nicht erreicht werden, wird der Inhalt zur nächstgelegenen gültigen Position geblättert. Der Standardwert für beide Ränder beträgt 50 Pixel.
Dies ist eine überladene Funktion.
Siehe auch centerOn().
void QGraphicsView::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
Diese Funktion dient der Vereinfachung. Sie entspricht dem Aufruf von `ensureVisible(QRectF(x, y, w, h), xmargin, ymargin)`.
Dies ist eine überladene Funktion.
[override virtual protected] bool QGraphicsView::event(QEvent *event)
Umsetzt: ` QAbstractScrollArea::event(QEvent *event)`.
void QGraphicsView::fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
Skaliert die Ansichtsmatrix und verschiebt die Bildlaufleisten, um sicherzustellen, dass das Szenenrechteck rect vollständig in den Ansichtsbereich passt. rect muss sich innerhalb des Szenenrechtecks befinden; andernfalls kann fitInView() nicht garantieren, dass das gesamte Rechteck sichtbar ist.
Diese Funktion behält die Drehung, Verschiebung oder Scherung der Ansicht bei. Die Ansicht wird entsprechend aspectRatioMode skaliert. rect wird in der Ansicht zentriert, wenn es nicht genau hineinpasst.
Es ist üblich, `fitInView()` aus einer Neuimplementierung von ` resizeEvent()` heraus aufzurufen, um sicherzustellen, dass die gesamte Szene oder Teile davon automatisch skaliert werden, um sich der neuen Größe des Ansichtsfensters anzupassen, wenn die Ansicht in der Größe verändert wird. Beachten Sie jedoch, dass der Aufruf von `fitInView()` innerhalb von ` resizeEvent()` zu einer unerwünschten Rekursion bei der Größenanpassung führen kann, wenn die neue Transformation den automatischen Status der Bildlaufleisten umschaltet. Sie können die Bildlaufleisten-Richtlinien auf „immer ein“ oder „immer aus“ umschalten, um dies zu verhindern (siehe ` horizontalScrollBarPolicy()` und ` verticalScrollBarPolicy()`).
Wenn ` rect ` leer ist oder der Viewport zu klein ist, führt diese Funktion keine Aktion aus.
Siehe auch setTransform(), ensureVisible() und centerOn().
void QGraphicsView::fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
Stellt sicher, dass „ item “ genau in die Ansicht passt, und skaliert die Ansicht entsprechend „ aspectRatioMode “.
Dies ist eine überladene Funktion.
Siehe auch ensureVisible() und centerOn().
void QGraphicsView::fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
Diese Komfortfunktion entspricht dem Aufruf von `fitInView(QRectF(x, y, w, h), aspectRatioMode)`.
Dies ist eine überladene Funktion.
Siehe auch ensureVisible() und centerOn().
[override virtual protected] void QGraphicsView::focusInEvent(QFocusEvent *event)
Implementiert: ` QWidget::focusInEvent(QFocusEvent *event)`.
[override virtual protected] bool QGraphicsView::focusNextPrevChild(bool next)
Implementiert: ` QWidget::focusNextPrevChild` (bool next).
[override virtual protected] void QGraphicsView::focusOutEvent(QFocusEvent *event)
Implementiert: ` QWidget::focusOutEvent(QFocusEvent *event)`.
[override virtual protected] void QGraphicsView::inputMethodEvent(QInputMethodEvent *event)
Implementiert: QWidget::inputMethodEvent(QInputMethodEvent *event).
[override virtual] QVariant QGraphicsView::inputMethodQuery(Qt::InputMethodQuery query) const
Implementiert neu: ` QWidget::inputMethodQuery` (Qt::InputMethodQuery query) const.
[slot] void QGraphicsView::invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers)
Macht „ layers “ innerhalb von „ rect “ ungültig und plant eine Neuzeichnung an. „ rect “ liegt in Szenenkoordinaten vor. Alle zwischengespeicherten Inhalte für „ layers “ innerhalb von „ rect “ werden bedingungslos ungültig gemacht und neu gezeichnet.
Sie können diese Funktion aufrufen, um QGraphicsView über Änderungen am Hintergrund oder Vordergrund der Szene zu informieren. Sie wird häufig bei Szenen mit kachelbasierten Hintergründen verwendet, um Änderungen zu melden, wenn QGraphicsView das Hintergrund-Caching aktiviert hat.
Beachten Sie, dass QGraphicsView derzeit nur das Hintergrund-Caching unterstützt (siehe QGraphicsView::CacheBackground). Diese Funktion entspricht dem Aufruf von update(), wenn eine beliebige Ebene außer QGraphicsScene::BackgroundLayer übergeben wird.
Siehe auch QGraphicsScene::invalidate() und update().
bool QGraphicsView::isTransformed() const
Gibt „ true “ zurück, wenn die Ansicht transformiert wurde (d. h., wenn eine Nicht-Identitäts-Transformation zugewiesen wurde oder die Bildlaufleisten angepasst wurden).
Siehe auch setTransform(), horizontalScrollBar() und verticalScrollBar().
QGraphicsItem *QGraphicsView::itemAt(const QPoint &pos) const
Gibt das Element an der Position pos zurück, wobei es sich um Koordinaten im Ansichtsfenster handelt. Befinden sich mehrere Elemente an dieser Position, gibt diese Funktion das oberste Element zurück.
Beispiel:
void CustomView::mousePressEvent(QMouseEvent*event)
{
if (QGraphicsItem*item = itemAt(event->pos())) {
qDebug() << "You clicked on item" << item;
} else {
qDebug("You didn't click on an item.");
}
}Siehe auch items() und Sorting.
QGraphicsItem *QGraphicsView::itemAt(int x, int y) const
Diese Funktion dient der Vereinfachung. Sie entspricht dem Aufruf von itemAt(QPoint(x, y)).
Dies ist eine überladene Funktion.
QList<QGraphicsItem *> QGraphicsView::items() const
Gibt eine Liste aller Elemente der zugehörigen Szene in absteigender Stapelreihenfolge zurück (d. h., das erste Element in der zurückgegebenen Liste ist das oberste Element).
Siehe auch QGraphicsScene::items() und Sorting.
QList<QGraphicsItem *> QGraphicsView::items(const QPoint &pos) const
Gibt eine Liste aller Elemente an der Position „ pos “ in der Ansicht zurück. Die Elemente werden in absteigender Stapelreihenfolge aufgelistet (d. h., das erste Element in der Liste ist das oberste Element, und das letzte Element ist das unterste Element). „ pos “ ist in Ansichtsbereichskoordinaten angegeben.
Diese Funktion wird am häufigsten aus Mausereignis-Handlern in einer Unterklasse von ` QGraphicsView` aufgerufen. ` pos ` ist in untransformierten Viewport-Koordinaten angegeben, genau wie bei ` QMouseEvent::position()`.
void CustomView::mousePressEvent(QMouseEvent*event)
{
qDebug() << "There are" << items(event->pos()).size()
<< „Objekte an Position“ << mapToScene(event->pos());
}Siehe auch QGraphicsScene::items() und Sorting.
QList<QGraphicsItem *> QGraphicsView::items(int x, int y) const
Diese Funktion dient der Vereinfachung. Sie entspricht dem Aufruf von `items(QPoint(x, y))`.
QList<QGraphicsItem *> QGraphicsView::items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Diese Komfortfunktion entspricht dem Aufruf von `items(QRectF(x, y, w, h), mode)`.
QList<QGraphicsItem *> QGraphicsView::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Gibt eine Liste aller Elemente zurück, die – abhängig von ` mode` – entweder von ` path` enthalten werden oder sich mit diesem überschneiden. ` path ` ist in Viewport-Koordinaten angegeben.
Der Standardwert für ` mode ` ist ` Qt::IntersectsItemShape`; es werden alle Elemente zurückgegeben, deren exakte Form sich mit ` path ` schneidet oder von diesem enthalten ist.
Dies ist eine überladene Funktion.
Siehe auch „ itemAt()“, „ items()“, „ mapToScene()“ und „ Sorting “.
QList<QGraphicsItem *> QGraphicsView::items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Gibt eine Liste aller Elemente zurück, die – abhängig von ` mode` – entweder von ` polygon` enthalten werden oder sich mit diesem überschneiden. ` polygon ` ist in Viewport-Koordinaten angegeben.
Der Standardwert für ` mode ` ist ` Qt::IntersectsItemShape`; es werden alle Elemente zurückgegeben, deren exakte Form sich mit ` polygon ` schneidet oder von diesem enthalten ist.
Die Elemente werden nach absteigender Stapelreihenfolge sortiert (d. h., das erste Element in der zurückgegebenen Liste ist das oberste Element).
Dies ist eine überladene Funktion.
Siehe auch itemAt(), items(), mapToScene() und Sorting.
QList<QGraphicsItem *> QGraphicsView::items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Gibt eine Liste aller Elemente zurück, die – abhängig von ` mode` – entweder in ` rect` enthalten sind oder sich mit diesem überschneiden. ` rect ` ist in Viewport-Koordinaten angegeben.
Der Standardwert für ` mode ` ist ` Qt::IntersectsItemShape`; es werden alle Elemente zurückgegeben, deren exakte Form sich mit ` rect ` schneidet oder von diesem enthalten ist.
Die Elemente werden in absteigender Stapelreihenfolge sortiert (d. h., das erste Element in der zurückgegebenen Liste ist das oberste Element).
Dies ist eine überladene Funktion.
Siehe auch itemAt(), items(), mapToScene() und Sorting.
[override virtual protected] void QGraphicsView::keyPressEvent(QKeyEvent *event)
Implementiert: ` QAbstractScrollArea::keyPressEvent(QKeyEvent *e)`.
[override virtual protected] void QGraphicsView::keyReleaseEvent(QKeyEvent *event)
Implementiert: ` QWidget::keyReleaseEvent(QKeyEvent *event)`.
QPainterPath QGraphicsView::mapFromScene(const QPainterPath &path) const
Konvertiert den Koordinaten-Painter-Pfad „ path “ aus der Szene in einen Koordinaten-Painter-Pfad im Ansichtsfenster.
Siehe auch mapToScene().
QPoint QGraphicsView::mapFromScene(const QPointF &point) const
Gibt die Szenenkoordinaten point in Viewport-Koordinaten zurück.
Siehe auch „ mapToScene()“.
QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const
Konvertiert das Polygon „ polygon “ aus Szenenkoordinaten in ein Polygon aus Ansichtsfensterkoordinaten.
Siehe auch ` mapToScene()`.
QPolygon QGraphicsView::mapFromScene(const QRectF &rect) const
Gibt das Szenenrechteck „ rect “ als Polygon mit Viewport-Koordinaten zurück.
Siehe auch mapToScene().
QPoint QGraphicsView::mapFromScene(qreal x, qreal y) const
Diese Funktion dient der Vereinfachung. Sie entspricht dem Aufruf von `mapFromScene(QPointF(x, y))`.
QPolygon QGraphicsView::mapFromScene(qreal x, qreal y, qreal w, qreal h) const
Diese Funktion dient der Vereinfachung. Sie entspricht dem Aufruf von `mapFromScene(QRectF(x, y, w, h))`.
QPainterPath QGraphicsView::mapToScene(const QPainterPath &path) const
Gibt den Viewport-Painter-Pfad path zurück, der auf einen Painter-Pfad im Szenenkoordinatensystem abgebildet ist.
Siehe auch mapFromScene().
QPointF QGraphicsView::mapToScene(const QPoint &point) const
Gibt die auf Szenenkoordinaten abgebildete Viewport-Koordinaten point zurück.
Hinweis: Es kann sinnvoll sein, statt des Punktes selbst das gesamte Rechteck abzubilden, das vom Pixel an der Position point abgedeckt wird. Dazu können Sie die Funktion `mapToScene(QRect(point, QSize(2, 2))` aufrufen.
Siehe auch mapFromScene().
QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const
Gibt das Viewport-Polygon polygon zurück, das auf ein Polygon im Szenenkoordinatensystem abgebildet wurde.
Siehe auch ` mapFromScene()`.
QPolygonF QGraphicsView::mapToScene(const QRect &rect) const
Gibt das Viewport-Rechteck „ rect “ zurück, das einem Polygon im Szenenkoordinatensystem zugeordnet ist.
Siehe auch mapFromScene().
QPointF QGraphicsView::mapToScene(int x, int y) const
Diese Funktion dient der Vereinfachung. Sie entspricht dem Aufruf von `mapToScene(QPoint(x, y))`.
QPolygonF QGraphicsView::mapToScene(int x, int y, int w, int h) const
Diese Funktion dient der Vereinfachung. Sie entspricht dem Aufruf von `mapToScene(QRect(x, y, w, h))`.
[override virtual protected] void QGraphicsView::mouseDoubleClickEvent(QMouseEvent *event)
Implementiert: ` QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)`.
[override virtual protected] void QGraphicsView::mouseMoveEvent(QMouseEvent *event)
Implementiert neu: ` QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)`.
[override virtual protected] void QGraphicsView::mousePressEvent(QMouseEvent *event)
Implementiert: ` QAbstractScrollArea::mousePressEvent(QMouseEvent *e)`.
[override virtual protected] void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)
Implementiert: ` QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)`.
[override virtual protected] void QGraphicsView::paintEvent(QPaintEvent *event)
Implementiert: QAbstractScrollArea::paintEvent(QPaintEvent *event).
void QGraphicsView::render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
Wandelt das Rechteck ` source ` aus der Szene, das in Ansichtskoordinaten vorliegt, mithilfe von ` painter` in das Rechteck ` target` um, das in Koordinaten des Zeichen-Geräts vorliegt. Diese Funktion ist nützlich, um den Inhalt der Ansicht auf einem Zeichen-Gerät wie beispielsweise einem ` QImage ` zu erfassen (z. B. um einen Screenshot zu erstellen) oder um auf `QPrinter` zu drucken. Beispiel:
QGraphicsScene scene;
scene.addItem(someItem);
//...
QGraphicsView view(&scene);
view.show();
//...
QPrinter printer(QPrinter::HighResolution);
printer.setDocName("Example");
QPainter painter(&printer);
// print, fitting the viewport contents into a full page
view.render(&painter);
// print the upper half of the viewport into the lower.
// half of the page.
QRect viewport = view.viewport()->rect();
view.render(&painter,
QRectF(0, printer.height() / 2,
printer.width(), printer.height() / 2),
viewport.adjusted(0, 0, 0, -viewport.height() / 2));Wenn „ source “ ein Null-Rechteck ist, verwendet diese Funktion „ viewport()->rect()“, um zu bestimmen, was gezeichnet werden soll. Wenn „ target “ ein Null-Rechteck ist, werden die vollen Abmessungen des Zeichenbereichs von „ painter “ (z. B. bei einem QPrinter die Seitengröße) verwendet.
Der Inhalt des Quell-Rechtseckes wird gemäß aspectRatioMode transformiert, um in das Ziel-Rechtseck zu passen. Standardmäßig wird das Seitenverhältnis beibehalten, und source wird so skaliert, dass es in target passt.
Siehe auch QGraphicsScene::render().
void QGraphicsView::resetCachedContent()
Setzt alle zwischengespeicherten Inhalte zurück. Durch den Aufruf dieser Funktion wird der Cache von „ QGraphicsView “ geleert. Wenn der aktuelle Cache-Modus „ CacheNone “ ist, hat diese Funktion keine Auswirkung.
Diese Funktion wird automatisch für Sie aufgerufen, wenn sich die Eigenschaften „ backgroundBrush “ oder „ QGraphicsScene::backgroundBrush “ ändern; Sie müssen diese Funktion nur aufrufen, wenn Sie die Methoden „ QGraphicsScene::drawBackground()“ oder „ QGraphicsView::drawBackground()“ neu implementiert haben, um einen benutzerdefinierten Hintergrund zu zeichnen, und eine vollständige Neuzeichnung auslösen müssen.
Siehe auch ` cacheMode()`.
void QGraphicsView::resetTransform()
Setzt die Ansichtstransformation auf die Einheitsmatrix zurück.
Siehe auch „ transform()“ und „ setTransform()“.
[override virtual protected] void QGraphicsView::resizeEvent(QResizeEvent *event)
Implementiert: ` QAbstractScrollArea::resizeEvent(QResizeEvent *event)`.
void QGraphicsView::rotate(qreal angle)
Dreht die aktuelle Ansichtstransformation um angle Grad im Uhrzeigersinn.
Siehe auch setTransform(), transform(), scale(), shear() und translate().
[signal] void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)
Dieses Signal wird ausgelöst, wenn der Rechteckbereich des Gummibands geändert wird. Der Sichtbereich wird durch „ rubberBandRect “ festgelegt. Die Start- und Endposition des Ziehvorgangs werden in Szenenpunkten mit „ fromScenePoint “ und „ toScenePoint “ angegeben.
Wenn die Gummibandauswahl endet, wird dieses Signal mit Nullwerten ausgelöst.
Siehe auch rubberBandRect().
QRect QGraphicsView::rubberBandRect() const
Diese Funktion gibt den aktuellen Bereich des „Rubber Bands“ (in Viewport-Koordinaten) zurück, wenn der Benutzer gerade eine Elementauswahl mit dem „Rubber Band“ vornimmt. Wenn der Benutzer das „Rubber Band“ nicht verwendet, gibt diese Funktion (Null) QRectF() zurück.
Beachten Sie, dass ein Teil dieses „ QRect “ außerhalb des sichtbaren Ansichtsbereichs liegen kann. Er kann z. B. negative Werte enthalten.
Siehe auch ` rubberBandSelectionMode ` und ` rubberBandChanged()`.
void QGraphicsView::scale(qreal sx, qreal sy)
Skaliert die aktuelle Ansichtstransformation um (sx, sy).
Siehe auch setTransform(), transform(), rotate(), shear() und translate().
QGraphicsScene *QGraphicsView::scene() const
Gibt einen Zeiger auf die Szene zurück, die derzeit in der Ansicht visualisiert wird. Wenn derzeit keine Szene visualisiert wird, wird ` nullptr ` zurückgegeben.
Siehe auch ` setScene()`.
[override virtual protected] void QGraphicsView::scrollContentsBy(int dx, int dy)
Implementiert: ` QAbstractScrollArea::scrollContentsBy(int dx, int dy)`.
void QGraphicsView::setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true)
Aktiviert „ flag “, wenn „ enabled “ auf „true“ gesetzt ist; andernfalls wird „ flag “ deaktiviert.
Siehe auch optimizationFlags.
void QGraphicsView::setRenderHint(QPainter::RenderHint hint, bool enabled = true)
Wenn „ enabled “ wahr ist, ist der Render-Hinweis „ hint “ aktiviert; andernfalls ist er deaktiviert.
Siehe auch „ renderHints “.
void QGraphicsView::setScene(QGraphicsScene *scene)
Setzt die aktuelle Szene auf „ scene “. Wenn „ scene “ bereits angezeigt wird, führt diese Funktion keine Aktion aus.
Wenn eine Szene für eine Ansicht festgelegt wird, wird das Signal ` QGraphicsScene::changed()` automatisch mit dem Slot ` updateScene()` dieser Ansicht verbunden, und die Bildlaufleisten der Ansicht werden an die Größe der Szene angepasst.
Die Ansicht übernimmt nicht die Eigentümerschaft an ` scene`.
Siehe auch ` scene()`.
void QGraphicsView::setTransform(const QTransform &matrix, bool combine = false)
Setzt die aktuelle Transformationsmatrix der Ansicht auf „ matrix “.
Ist „ combine “ wahr, wird „ matrix “ mit der aktuellen Matrix kombiniert; andernfalls ersetzt „ matrix “ die aktuelle Matrix. „ combine “ ist standardmäßig falsch.
Die Transformationsmatrix wandelt die Szene in Ansichtskoordinaten um. Bei Verwendung der Standardtransformation, die durch die Einheitsmatrix bereitgestellt wird, entspricht ein Pixel in der Ansicht einer Einheit in der Szene (z. B. wird ein rechteckiges Element mit den Maßen 10x10 mit 10x10 Pixeln in der Ansicht gezeichnet). Wird eine 2x2-Skalierungsmatrix angewendet, wird die Szene im Verhältnis 1:2 gezeichnet (z. B. wird ein rechteckiges Element mit den Maßen 10x10 dann mit 20x20 Pixeln in der Ansicht gezeichnet).
Beispiel:
QGraphicsScene scene;
scene.addText("GraphicsView rotated clockwise");
QGraphicsView view(&scene);
view.rotate(90); // the text is rendered with a 90 degree clockwise rotation
view.show();Um die Interaktion mit Elementen in einer transformierten Ansicht zu vereinfachen, stellt „ QGraphicsView “ die Funktionen „mapTo...“ und „mapFrom...“ bereit, die eine Umrechnung zwischen Szenen- und Ansichts-Koordinaten ermöglichen. So können Sie beispielsweise „ mapToScene()“ aufrufen, um eine Ansichts-Koordinate auf eine Fließkomma-Szenenkoordinate abzubilden, oder „ mapFromScene()“, um von Fließkomma-Szenenkoordinaten auf Ansichts-Koordinaten umzurechnen.
Siehe auch transform(), resetTransform(), rotate(), scale(), shear() und translate().
[override virtual protected slot] void QGraphicsView::setupViewport(QWidget *widget)
Umsetzt: QAbstractScrollArea::setupViewport(QWidget *viewport).
Dieser Slot wird von ` QAbstractScrollArea ` aufgerufen, nachdem ` setViewport()` aufgerufen wurde. Implementieren Sie diese Funktion in einer Unterklasse von ` QGraphicsView ` neu, um den neuen Viewport- widget zu initialisieren, bevor er verwendet wird.
Siehe auch setViewport().
void QGraphicsView::shear(qreal sh, qreal sv)
Schneidet die aktuelle Ansichts-Transformation um (sh, sv) ab.
Siehe auch „ setTransform()“, „ transform()“, „ rotate()“, „ scale()“ und „ translate()“.
[override virtual protected] void QGraphicsView::showEvent(QShowEvent *event)
Implementiert: ` QWidget::showEvent(QShowEvent *event)`.
[override virtual] QSize QGraphicsView::sizeHint() const
Implementiert erneut: QAbstractScrollArea::sizeHint() const.
QTransform QGraphicsView::transform() const
Gibt die aktuelle Transformationsmatrix für die Ansicht zurück. Ist keine aktuelle Transformation festgelegt, wird die Einheitsmatrix zurückgegeben.
Siehe auch setTransform(), rotate(), scale(), shear() und translate().
void QGraphicsView::translate(qreal dx, qreal dy)
Wandelt die aktuelle Ansichtstransformation um gemäß (dx, dy).
Siehe auch setTransform(), transform(), rotate() und shear().
[slot] void QGraphicsView::updateScene(const QList<QRectF> &rects)
Plant eine Aktualisierung der Szenenrechtecke rects.
Siehe auch QGraphicsScene::changed().
[slot] void QGraphicsView::updateSceneRect(const QRectF &rect)
Benachrichtigt „ QGraphicsView “, dass sich das Szenenrechteck der Szene geändert hat. „ rect “ ist das neue Szenenrechteck. Wenn für die Ansicht bereits explizit ein Szenenrechteck festgelegt wurde, führt diese Funktion keine Aktion aus.
Siehe auch sceneRect und QGraphicsScene::sceneRectChanged().
[override virtual protected] bool QGraphicsView::viewportEvent(QEvent *event)
Umsetzt: ` QAbstractScrollArea::viewportEvent(QEvent *event)`.
QTransform QGraphicsView::viewportTransform() const
Gibt eine Matrix zurück, die Szenenkoordinaten auf Ansichtsbereichskoordinaten abbildet.
Siehe auch „ mapToScene()“ und „ mapFromScene()“.
[override virtual protected] void QGraphicsView::wheelEvent(QWheelEvent *event)
Umsetzt: ` QAbstractScrollArea::wheelEvent(QWheelEvent *e)`.
© 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.