QGraphicsView Class
Die Klasse QGraphicsView stellt ein Widget zur Verfügung, mit dem der Inhalt eines QGraphicsScene angezeigt werden kann. ...
Kopfzeile: | #include <QGraphicsView> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
Vererbt: | 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 |
Reimplementierte ö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) |
Reimplementierte 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 Steckplätze
virtual void | setupViewport(QWidget *widget) override |
Detaillierte Beschreibung
QGraphicsView visualisiert den Inhalt einer QGraphicsScene in einem scrollbaren Ansichtsfenster. Um eine Szene mit geometrischen Elementen zu erstellen, siehe die Dokumentation von QGraphicsScene. QGraphicsView ist Teil des Graphics View Frameworks.
Um eine Szene zu visualisieren, beginnen Sie mit der Konstruktion eines QGraphicsView-Objekts und übergeben die Adresse der Szene, die Sie visualisieren möchten, an den Konstruktor von QGraphicsView. Alternativ können Sie auch setScene() aufrufen, um die Szene zu einem späteren Zeitpunkt zu setzen. Nachdem Sie show() aufgerufen haben, scrollt die Ansicht standardmäßig zur Mitte der Szene und zeigt alle Elemente an, die an diesem Punkt sichtbar sind. Ein Beispiel:
QGraphicsScene scene; scene.addText("Hello, world!"); QGraphicsView view(&scene); view.show();
Sie können explizit zu jeder beliebigen Position in der Szene blättern, indem Sie die Bildlaufleisten verwenden oder centerOn() aufrufen. Durch die Übergabe eines Punktes an centerOn(), scrollt QGraphicsView sein Ansichtsfenster, um sicherzustellen, dass der Punkt in der Ansicht zentriert ist. Eine Überladung wird für das Scrollen zu einem QGraphicsItem bereitgestellt. In diesem Fall sorgt QGraphicsView dafür, dass der Mittelpunkt des Elements in der Ansicht zentriert ist. Wenn Sie nur sicherstellen wollen, dass ein bestimmter Bereich sichtbar ist (aber nicht unbedingt zentriert), können Sie stattdessen ensureVisible() aufrufen.
QGraphicsView kann verwendet werden, um eine ganze Szene oder nur Teile davon zu visualisieren. Der visualisierte Bereich wird standardmäßig automatisch erkannt, wenn die Ansicht zum ersten Mal angezeigt wird (durch Aufruf von QGraphicsScene::itemsBoundingRect()). Um das Rechteck des sichtbaren Bereichs selbst festzulegen, können Sie setSceneRect() aufrufen. Dadurch wird der Bereich der Bildlaufleisten entsprechend angepasst. Beachten Sie, dass, obwohl die Szene eine praktisch unbegrenzte Größe unterstützt, der Bereich der Bildlaufleisten niemals den Bereich eines Integers (INT_MIN, INT_MAX) überschreiten wird.
QGraphicsView visualisiert die Szene durch den Aufruf von render(). Standardmäßig werden die Elemente auf das Ansichtsfenster gezeichnet, indem ein reguläres QPainter verwendet wird und die Standard-Render-Hinweise benutzt werden. Um die Standard-Render-Hinweise zu ändern, die QGraphicsView beim Zeichnen von Elementen an QPainter übergibt, können Sie setRenderHints() aufrufen.
Standardmäßig bietet QGraphicsView ein reguläres QWidget für das Viewport-Widget. Sie können auf dieses Widget zugreifen, indem Sie viewport() aufrufen, oder Sie können es ersetzen, indem Sie setViewport() aufrufen. Um mit OpenGL zu rendern, rufen Sie einfach setViewport(new QOpenGLWidget) auf. QGraphicsView übernimmt das Eigentum an dem Viewport-Widget.
QGraphicsView unterstützt affine Transformationen mit QTransform. Sie können entweder eine Matrix an setTransform() übergeben, oder Sie können eine der Komfortfunktionen rotate(), scale(), translate() oder shear() aufrufen. Die beiden gebräuchlichsten Transformationen sind Skalierung, die zum Zoomen verwendet wird, und Rotation. QGraphicsView hält das Zentrum der Ansicht während einer Transformation fest. Aufgrund der Ausrichtung der Szene (setAlignment()) hat das Verschieben der Ansicht keine visuellen Auswirkungen.
Sie können mit der Maus und der Tastatur mit den Elementen in der Szene interagieren. QGraphicsView wandelt die Maus- und Tastenereignisse in Szenenereignisse um (Ereignisse, die QGraphicsSceneEvent erben) und leitet sie an die visualisierte Szene weiter. Letztendlich ist es das einzelne Element, das die Ereignisse verarbeitet und auf sie reagiert. Wenn Sie z. B. auf ein auswählbares Element klicken, teilt das Element der Szene mit, dass es ausgewählt wurde, und zeichnet sich selbst neu, um ein Auswahlrechteck anzuzeigen. Wenn Sie mit der Maus klicken und ziehen, um ein bewegliches Element zu verschieben, verarbeitet das Element die Mausbewegungen und bewegt sich selbst. Die Elementinteraktion ist standardmäßig aktiviert, und Sie können sie durch den Aufruf von setInteractive() umschalten.
Sie können auch Ihre eigene benutzerdefinierte Szeneninteraktion bereitstellen, indem Sie eine Unterklasse von QGraphicsView erstellen und die Maus- und Tastenereignishandler neu implementieren. Um die programmatische Interaktion mit Elementen in der Ansicht zu vereinfachen, bietet QGraphicsView die Mapping-Funktionen mapToScene() und mapFromScene() sowie die Element-Accessors items() und itemAt(). Mit diesen Funktionen können Sie Punkte, Rechtecke, Polygone und Pfade zwischen Ansichtskoordinaten und Szenenkoordinaten abbilden und Elemente in der Szene anhand von Ansichtskoordinaten finden.
Bei der Verwendung von QOpenGLWidget als Ansichtsfenster wird das stereoskopische Rendering unterstützt. Dies geschieht nach dem gleichen Muster wie bei QOpenGLWidget::paintGL. Um es zu aktivieren, setzen Sie das Flag QSurfaceFormat::StereoBuffers. Aufgrund der internen Handhabung des Flags muss das QSurfaceFormat::StereoBuffers Flag global gesetzt werden, bevor das Fenster mit QSurfaceFormat::setDefaultFormat() erstellt wird. Wenn das Flag aktiviert ist und es Hardware-Unterstützung für stereoskopisches Rendering gibt, dann werden drawBackground() und drawForeground() zweimal pro Frame ausgelöst. Rufen Sie QOpenGLWidget::currentTargetBuffer() auf, um abzufragen, in welchen Puffer gerade gezeichnet wird.
Hinweis: Die Verwendung eines OpenGL-Viewports schränkt die Möglichkeit ein, QGraphicsProxyWidget zu verwenden. Nicht alle Kombinationen von Widgets und Stilen können mit einem solchen Setup unterstützt werden. Sie sollten Ihre Benutzeroberfläche sorgfältig testen und die notwendigen Anpassungen vornehmen.
Siehe auch QGraphicsScene, QGraphicsItem, und QGraphicsSceneEvent.
Dokumentation der Mitgliedstypen
enum QGraphicsView::CacheModeFlag
flags QGraphicsView::CacheMode
Diese Aufzählung beschreibt die Flags, die Sie für den Cachemodus von QGraphicsView setzen können.
Konstante | Wert | Beschreibung |
---|---|---|
QGraphicsView::CacheNone | 0x0 | Alle Bilder werden direkt auf das Ansichtsfenster gemalt. |
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, wird QGraphicsView eine Pixmap in der vollen Größe des Ansichtsfensters zuweisen. |
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 Aufzählung beschreibt die Standardaktion für die Ansicht beim Drücken und Ziehen der Maus über das Ansichtsfenster.
Konstante | Wert | Beschreibung |
---|---|---|
QGraphicsView::NoDrag | 0 | Es passiert nichts; das Mausereignis wird ignoriert. |
QGraphicsView::ScrollHandDrag | 1 | Der Cursor verwandelt sich in eine zeigende Hand, und das Ziehen der Maus führt zu einem Scrollen der Scrollbalken. Dieser Modus funktioniert sowohl im interactive als auch im nicht-interaktiven Modus. |
QGraphicsView::RubberBandDrag | 2 | Es wird ein Gummiband angezeigt. 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 Aufzählung beschreibt Flags, die Sie aktivieren können, um die Rendering-Leistung in QGraphicsView zu verbessern. Standardmäßig ist keines dieser Flags gesetzt. Beachten Sie, dass das Setzen eines Flags in der Regel einen Nebeneffekt mit sich bringt, der je nach Malgerät und Plattform unterschiedlich sein kann.
Konstante | Wert | Beschreibung |
---|---|---|
QGraphicsView::DontSavePainterState | 0x1 | Beim Rendern schützt QGraphicsView den Painter-Status (siehe QPainter::save()) beim Rendern des Hintergrunds oder Vordergrunds und beim Rendern jedes Elements. Dies ermöglicht es Ihnen, den Painter in einem veränderten Zustand zu belassen (d. h. Sie können QPainter::setPen() oder QPainter::setBrush() aufrufen, ohne den Zustand nach dem Malen wiederherzustellen). Wenn die Elemente den Zustand jedoch konsequent wiederherstellen, sollten Sie dieses Flag aktivieren, um zu verhindern, dass QGraphicsView dasselbe tut. |
QGraphicsView::DontAdjustForAntialiasing | 0x2 | Deaktiviert QGraphicsView die automatische Antialiasing-Anpassung von exponierten Bereichen. Elemente, die an den Grenzen ihrer QGraphicsItem::boundingRect() Linien mit Antialiasing darstellen, können dazu führen, dass Teile der Linie außerhalb dargestellt werden. Um Rendering-Artefakte zu vermeiden, erweitert QGraphicsView alle exponierten Bereiche um 2 Pixel in alle Richtungen. Wenn Sie dieses Flag aktivieren, nimmt QGraphicsView diese Anpassungen nicht mehr vor und minimiert die Bereiche, die neu gezeichnet werden müssen, was die Leistung verbessert. Ein häufiger Nebeneffekt ist, dass Elemente, die mit Antialiasing gezeichnet werden, Malspuren in der Szene hinterlassen können, wenn sie bewegt werden. |
QGraphicsView::IndirectPainting | 0x4 | Seit Qt 4.6 wird der alte Malalgorithmus wiederhergestellt, der QGraphicsView::drawItems() und QGraphicsScene::drawItems() aufruft. Nur für die Kompatibilität mit altem Code zu verwenden. |
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 lä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 Aufzählung beschreibt, wie QGraphicsView sein Ansichtsfenster 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 neu belichtet wird, aktualisiert QGraphicsView das gesamte Ansichtsfenster. Dieser Ansatz ist am schnellsten, wenn QGraphicsView mehr Zeit damit verbringt, herauszufinden, was gezeichnet werden soll, als es mit dem Zeichnen verbringen würde (z.B. wenn sehr viele kleine Elemente wiederholt aktualisiert werden). Dies ist der bevorzugte Aktualisierungsmodus für Ansichtsfenster, die keine partiellen Aktualisierungen unterstützen, wie QOpenGLWidget, und für Ansichtsfenster, die die Scroll-Optimierung deaktivieren müssen. |
QGraphicsView::MinimalViewportUpdate | 1 | QGraphicsView bestimmt den minimalen Bereich des Ansichtsfensters, der neu gezeichnet werden muss, und minimiert die Zeit, die für das Zeichnen aufgewendet wird, indem es ein Neuzeichnen von Bereichen, die sich nicht geändert haben, vermeidet. Dies ist der Standardmodus von QGraphicsView. Obwohl dieser Ansatz im Allgemeinen die beste Leistung bietet, kann QGraphicsView bei vielen kleinen sichtbaren Änderungen in der Szene mehr Zeit damit verbringen, den minimalen Ansatz zu finden, als mit dem Zeichnen verbracht wird. |
QGraphicsView::SmartViewportUpdate | 2 | QGraphicsView versucht, einen optimalen Aktualisierungsmodus zu finden, indem es die Bereiche analysiert, 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 eine Region nach Änderungen durchsucht und so die Zeit für die Ermittlung der neu zu zeichnenden Bereiche minimiert. Der Nachteil ist, dass auch Bereiche, die sich nicht geändert haben, neu gezeichnet werden müssen. |
QGraphicsView::NoViewportUpdate | 3 | QGraphicsView aktualisiert sein Ansichtsfenster nie, wenn sich die Szene ändert; es wird erwartet, dass der Benutzer alle Aktualisierungen kontrolliert. 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 das Ansichtsfenster anderweitig extern aktualisiert wird. |
Siehe auch viewportUpdateMode.
Dokumentation der Eigenschaft
alignment : Qt::Alignment
Diese Eigenschaft bestimmt die Ausrichtung der Szene in der Ansicht, wenn die gesamte Szene sichtbar ist.
Wenn die gesamte Szene in der Ansicht sichtbar ist (d.h. es gibt keine sichtbaren Bildlaufleisten), entscheidet die Ausrichtung der Ansicht, wo die Szene in der Ansicht gerendert wird. Wenn die Ausrichtung beispielsweise Qt::AlignCenter ist, was der Standard ist, wird die Szene in der Ansicht zentriert, und wenn die Ausrichtung (Qt::AlignLeft | Qt::AlignTop) ist, wird die Szene in der linken oberen 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 wird verwendet, um den eigenen Hintergrund der Szene außer Kraft zu setzen, 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 legt fest, welche Teile der Ansicht zwischengespeichert werden
QGraphicsView kann vorgerenderten Inhalt in einem QPixmap zwischenspeichern, der dann auf das Ansichtsfenster gezeichnet wird. Der Zweck einer solchen Zwischenspeicherung ist es, die gesamte Rendering-Zeit für Bereiche zu beschleunigen, die langsam zu rendern sind. Textur-, Farbverlaufs- und Alphahintergründe zum Beispiel können sehr langsam gerendert werden, besonders bei einer transformierten Ansicht. Das CacheBackground Flag aktiviert die Zwischenspeicherung des Hintergrunds der Ansicht. Zum Beispiel:
QGraphicsView view; view.setBackgroundBrush(QImage(":/images/backgroundtile.png")); view.setCacheMode(QGraphicsView::CacheBackground);
Der Cache wird jedes Mal ungültig gemacht, wenn die Ansicht transformiert wird. Beim Scrollen ist jedoch nur eine teilweise Invalidierung 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 enthält das Verhalten beim Ziehen der Maus über die Szene, während die linke Maustaste gedrückt ist.
Diese Eigenschaft legt fest, was passieren soll, wenn der Benutzer auf den Szenenhintergrund klickt und die Maus zieht (z. B. Scrollen des Viewport-Inhalts mit einem zeigenden Handcursor oder Auswahl mehrerer Elemente mit einem Gummiband). Der Standardwert, NoDrag, bewirkt nichts.
Dieses Verhalten wirkt sich nur auf Mausklicks aus, die nicht von einem Element verarbeitet werden. Sie können ein eigenes Verhalten definieren, indem Sie eine Unterklasse von QGraphicsView erstellen und 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 wird verwendet, um den eigenen Vordergrund der Szene außer Kraft zu setzen, und definiert das Verhalten von drawForeground(). Um eine benutzerdefinierte Vordergrundzeichnung für diese Ansicht 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 gibt an, ob die Ansicht Szeneninteraktion zulässt.
Wenn sie aktiviert ist, wird diese Ansicht so eingestellt, dass sie Szeneninteraktion zulässt. Andernfalls lässt diese Ansicht keine Interaktion zu, und alle Maus- oder Tastenereignisse werden ignoriert (d. h., sie fungiert als reine Leseansicht).
Standardmäßig ist diese Eigenschaft true
.
Zugriffsfunktionen:
bool | isInteractive() const |
void | setInteractive(bool allowed) |
optimizationFlags : OptimizationFlags
Flags, die verwendet werden können, um die Leistung von QGraphicsView zu optimieren.
QGraphicsView verwendet Clipping, zusätzliche Bounding-Rect-Anpassungen und bestimmte andere Hilfsmittel, um die Rendering-Qualität und -Leistung für den Normalfall einer Grafikszene zu verbessern. Abhängig von der Zielplattform, der Szene und dem verwendeten Ansichtsfenster können einige dieser Operationen jedoch die Leistung beeinträchtigen.
Die Auswirkung ist von Flag zu Flag unterschiedlich; Einzelheiten finden Sie in der Dokumentation 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-Rendering-Hinweise für die Ansicht
Diese Hinweise werden verwendet, um QPainter zu initialisieren, bevor jedes sichtbare Element gezeichnet wird. QPainter verwendet Render-Hinweise, um Rendering-Funktionen wie Antialiasing und glatte Pixmap-Transformation zu aktivieren.
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();
Zugriff auf Funktionen:
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 verwendet diese Eigenschaft, um zu entscheiden, 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 linke obere Ecke der Ansicht scheint während der Größenänderung verankert zu sein.
Beachten Sie, dass sich diese Eigenschaft nur dann auswirkt, 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 Ausrichtung und transformationAnchor.
rubberBandSelectionMode : Qt::ItemSelectionMode
Diese Eigenschaft bestimmt das Verhalten bei der Auswahl von Elementen mit einem Gummiband-Auswahlrechteck.
Diese Eigenschaft legt fest, wie Elemente ausgewählt werden, wenn der Ziehmodus RubberBandDrag verwendet wird.
Der Standardwert ist Qt::IntersectsItemShape; alle Elemente, deren Form sich mit dem Gummiband schneidet oder darin enthalten ist, 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 visualisiert wird.
Das Szenenrechteck definiert die Ausdehnung der Szene, und im Fall der Ansicht bedeutet dies den Bereich der Szene, in dem Sie mit den Bildlaufleisten navigieren können.
Wenn es nicht gesetzt ist, oder wenn ein Nullwert QRectF gesetzt ist, hat diese Eigenschaft den gleichen Wert wie QGraphicsScene::sceneRect und ändert sich mit QGraphicsScene::sceneRect. Andernfalls wird das Szenenrect der Ansicht nicht von der Szene beeinflusst.
Beachten Sie, dass, obwohl die Szene eine praktisch unbegrenzte Größe unterstützt, der Bereich der Bildlaufleisten niemals den Bereich einer Ganzzahl (INT_MIN, INT_MAX) überschreiten wird. Wenn die Szene größer ist als die Werte der Bildlaufleisten, können Sie stattdessen translate() verwenden, um in der Szene zu navigieren.
Standardmäßig enthält diese Eigenschaft ein Rechteck am Ursprung mit einer Breite und Höhe von 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 bei Transformationen positionieren soll.
QGraphicsView verwendet diese Eigenschaft, um zu entscheiden, wie die Szene im Ansichtsfenster positioniert werden soll, wenn sich die Transformationsmatrix ändert und das Koordinatensystem der Ansicht transformiert wird. Das Standardverhalten AnchorViewCenter sorgt dafür, dass der Szenenpunkt im Zentrum der Ansicht bei Transformationen unverändert bleibt (z. B. wird die Szene beim Drehen um das Zentrum der Ansicht gedreht).
Beachten Sie, dass sich diese Eigenschaft nur dann auswirkt, wenn nur ein Teil der Szene sichtbar ist (d. h. wenn es Bildlaufleisten gibt). 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 Ausrichtung und resizeAnchor.
viewportUpdateMode : ViewportUpdateMode
wie das Ansichtsfenster seinen Inhalt aktualisieren soll.
QGraphicsView verwendet diese Eigenschaft, um zu entscheiden, wie Bereiche der Szene, die neu belichtet oder verändert wurden, aktualisiert werden sollen. Normalerweise brauchen Sie diese Eigenschaft nicht zu ändern, aber es gibt einige Fälle, in denen dies die Rendering-Leistung verbessern kann. Siehe die Dokumentation ViewportUpdateMode für spezifische Details.
Der Standardwert ist MinimalViewportUpdate, wobei QGraphicsView einen möglichst kleinen Bereich des Ansichtsfensters aktualisiert, wenn sich der Inhalt ändert.
Zugriffsfunktionen:
QGraphicsView::ViewportUpdateMode | viewportUpdateMode() const |
void | setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode) |
Siehe auch ViewportUpdateMode und cacheMode.
Dokumentation der Mitgliedsfunktionen
QGraphicsView::QGraphicsView(QWidget *parent = nullptr)
Konstruiert eine QGraphicsView. parent wird an den Konstruktor von QWidget übergeben.
QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)
Konstruiert eine QGraphicsView und setzt die visualisierte Szene auf scene. parent wird an den Konstruktor von QWidget übergeben.
[virtual noexcept]
QGraphicsView::~QGraphicsView()
Zerstört das Objekt QGraphicsView.
void QGraphicsView::centerOn(const QPointF &pos)
Scrollt den Inhalt des Ansichtsfensters, um sicherzustellen, dass die Szenenkoordinate pos in der Ansicht zentriert ist.
Da pos eine Fließkommakoordinate ist und die Bildlaufleisten mit Ganzzahlkoordinaten arbeiten, ist die Zentrierung nur eine Annäherung.
Hinweis: Befindet sich das Element nahe am oder außerhalb des Rahmens, ist es zwar in der Ansicht sichtbar, aber nicht zentriert.
Siehe auch ensureVisible().
void QGraphicsView::centerOn(const QGraphicsItem *item)
Dies ist eine überladene Funktion.
Scrollt den Inhalt des Ansichtsfensters, um sicherzustellen, dass item in der Ansicht zentriert ist.
Siehe auch ensureVisible().
void QGraphicsView::centerOn(qreal x, qreal y)
Dies ist eine überladene Funktion.
Diese Funktion wird aus Gründen der Bequemlichkeit bereitgestellt. Sie ist gleichbedeutend mit dem Aufruf von centerOn(QPointF(x, y)).
[override virtual protected]
void QGraphicsView::contextMenuEvent(QContextMenuEvent *event)
Reimplements: QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e).
[override virtual protected]
void QGraphicsView::dragEnterEvent(QDragEnterEvent *event)
Reimplements: QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event).
[override virtual protected]
void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)
Reimplements: QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event).
[override virtual protected]
void QGraphicsView::dragMoveEvent(QDragMoveEvent *event)
Reimplements: QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event).
[virtual protected]
void QGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)
Zeichnet den Hintergrund der Szene unter Verwendung von painter, bevor Elemente und der Vordergrund gezeichnet werden. Implementieren Sie diese Funktion neu, um einen benutzerdefinierten Hintergrund für diese Ansicht zu erstellen.
Wenn Sie nur eine Farbe, eine Textur oder einen Farbverlauf für den Hintergrund definieren wollen, können Sie stattdessen setBackgroundBrush() aufrufen.
Alle Malvorgänge werden in Szenekoordinaten durchgeführt. rect ist das freigelegte Rechteck.
Die Standardimplementierung füllt rect mit dem backgroundBrush der Ansicht. Wenn kein solcher Pinsel definiert ist (die Vorgabe), 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 mit painter, nachdem der Hintergrund und alle Elemente gezeichnet wurden. Implementieren Sie diese Funktion neu, um einen benutzerdefinierten Vordergrund für diese Ansicht zu erstellen.
Wenn Sie nur eine Farbe, eine Textur oder einen Farbverlauf für den Vordergrund definieren wollen, können Sie stattdessen setForegroundBrush() aufrufen.
Alle Malvorgänge werden in Szenekoordinaten durchgeführt. rect ist das freigelegte Rechteck.
Die Standardimplementierung füllt rect mit dem foregroundBrush der Ansicht. Wenn kein solcher Pinsel definiert ist (die Vorgabe), wird stattdessen die Funktion drawForeground() der Szene aufgerufen.
Siehe auch drawBackground() und QGraphicsScene::drawForeground().
[override virtual protected]
void QGraphicsView::dropEvent(QDropEvent *event)
Reimplements: QAbstractScrollArea::dropEvent(QDropEvent *event).
void QGraphicsView::ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)
Rollt den Inhalt des Ansichtsfensters so, dass das Szenenrechteck rect sichtbar ist, wobei die Ränder durch xmargin und ymargin in Pixeln angegeben werden. Wenn das angegebene Rechteck nicht erreicht werden kann, wird der Inhalt an die nächste gültige Position gerollt. Der Standardwert für beide Ränder ist 50 Pixel.
Siehe auch centerOn().
void QGraphicsView::ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)
Dies ist eine überladene Funktion.
Rollt den Inhalt des Ansichtsfensters so, dass die Mitte des Elements item sichtbar ist, wobei die Ränder durch xmargin und ymargin in Pixeln angegeben werden. Wenn der angegebene Punkt nicht erreicht werden kann, wird der Inhalt an die nächste gültige Position gerollt. Der Standardwert für beide Ränder ist 50 Pixel.
Siehe auch centerOn().
void QGraphicsView::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
Dies ist eine überladene Funktion.
Diese Funktion wird aus Gründen der Bequemlichkeit bereitgestellt. Sie entspricht dem Aufruf von ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).
[override virtual protected]
bool QGraphicsView::event(QEvent *event)
Reimplements: 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 in das Ansichtsfenster passt. rect muss sich innerhalb des Szenenrechtecks befinden; andernfalls kann fitInView() nicht garantieren, dass das gesamte Rechteck sichtbar ist.
Diese Funktion behält die Rotation, Translation oder Scherung der Ansicht bei. Die Ansicht wird entsprechend aspectRatioMode skaliert. rect wird in der Ansicht zentriert, wenn sie nicht genau passt.
Es ist üblich, fitInView() innerhalb einer Neuimplementierung von resizeEvent() aufzurufen, um sicherzustellen, dass die gesamte Szene oder Teile der Szene automatisch skaliert werden, um sich der neuen Größe des Ansichtsfensters anzupassen, wenn die Größe der Ansicht geändert wird. Beachten Sie jedoch, dass der Aufruf von fitInView() innerhalb von resizeEvent() zu einer unerwünschten Rekursion der Größenänderung führen kann, wenn die neue Transformation den automatischen Zustand der Bildlaufleisten umschaltet. Um dies zu verhindern, können Sie die Bildlaufleistenrichtlinien auf immer ein oder immer aus stellen (siehe horizontalScrollBarPolicy() und verticalScrollBarPolicy()).
Wenn rect leer ist oder wenn das Ansichtsfenster zu klein ist, bewirkt diese Funktion nichts.
Siehe auch setTransform(), ensureVisible(), und centerOn().
void QGraphicsView::fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
Dies ist eine überladene Funktion.
Stellt sicher, dass item eng in die Ansicht passt und skaliert die Ansicht gemäß aspectRatioMode.
Siehe auch ensureVisible() und centerOn().
void QGraphicsView::fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
Dies ist eine überladene Funktion.
Diese Komfortfunktion entspricht dem Aufruf von fitInView(QRectF(x, y, w, h), aspectRatioMode).
Siehe auch ensureVisible() und centerOn().
[override virtual protected]
void QGraphicsView::focusInEvent(QFocusEvent *event)
Reimplements: QWidget::focusInEvent(QFocusEvent *event).
[override virtual protected]
bool QGraphicsView::focusNextPrevChild(bool next)
Reimplements: QWidget::focusNextPrevChild(bool next).
[override virtual protected]
void QGraphicsView::focusOutEvent(QFocusEvent *event)
Reimplements: QWidget::focusOutEvent(QFocusEvent *event).
[override virtual protected]
void QGraphicsView::inputMethodEvent(QInputMethodEvent *event)
Reimplements: QWidget::inputMethodEvent(QInputMethodEvent *event).
[override virtual]
QVariant QGraphicsView::inputMethodQuery(Qt::InputMethodQuery query) const
Reimplements: 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 ein erneutes Zeichnen. rect befindet sich in Szenenkoordinaten. 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 des Hintergrunds oder des Vordergrunds der Szene zu informieren. Sie wird häufig für Szenen mit kachelbasierten Hintergründen verwendet, um Änderungen mitzuteilen, wenn QGraphicsView das Caching des Hintergrunds aktiviert hat.
Beachten Sie, dass QGraphicsView derzeit nur Hintergrund-Caching unterstützt (siehe QGraphicsView::CacheBackground). Diese Funktion ist äquivalent zum Aufruf von update(), wenn eine andere Ebene als QGraphicsScene::BackgroundLayer übergeben wird.
Siehe auch QGraphicsScene::invalidate() und update().
bool QGraphicsView::isTransformed() const
Gibt true
zurück, wenn die Ansicht transformiert ist (d.h. eine nicht-identische 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, die in Ansichtskoordinaten angegeben ist. 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; } sonst { qDebug("You didn't click on an item."); } }
Siehe auch items() und Sorting.
QGraphicsItem *QGraphicsView::itemAt(int x, int y) const
Dies ist eine überladene Funktion.
Diese Funktion wird aus Gründen der Bequemlichkeit bereitgestellt. Sie ist gleichbedeutend mit dem Aufruf von itemAt(QPoint(x, y)).
QList<QGraphicsItem *> QGraphicsView::items() const
Gibt eine Liste aller Elemente in 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 Ansichtskoordinaten.
Diese Funktion wird am häufigsten innerhalb von Mausereignishandlern in einer Unterklasse in QGraphicsView aufgerufen. pos ist in untransformierten Viewport-Koordinaten, genau wie QMouseEvent::pos().
void CustomView::mousePressEvent(QMouseEvent *event){ qDebug() << "There are" << items(event->pos()).size() << "Elemente an Position"<< mapToScene(event->pos()); }
Siehe auch QGraphicsScene::items() und Sorting.
QList<QGraphicsItem *> QGraphicsView::items(int x, int y) const
Diese Funktion wird der Einfachheit halber bereitgestellt. Sie ist gleichbedeutend mit 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 ist gleichbedeutend mit dem Aufruf von items(QRectF(x, y, w, h), mode).
QList<QGraphicsItem *> QGraphicsView::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Dies ist eine überladene Funktion.
Gibt eine Liste aller Elemente zurück, die, abhängig von mode, entweder in path enthalten sind oder sich mit schneiden. path ist in Ansichtsfenster-Koordinaten.
Der Standardwert für mode ist Qt::IntersectsItemShape; es werden alle Elemente zurückgegeben, deren exakte Form sich mit path überschneidet oder von enthalten wird.
Siehe auch itemAt(), items(), mapToScene(), und Sorting.
QList<QGraphicsItem *> QGraphicsView::items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Dies ist eine überladene Funktion.
Gibt eine Liste aller Elemente zurück, die, abhängig von mode, entweder in polygon enthalten sind oder sich mit schneiden. polygon ist in Ansichtsfenster-Koordinaten.
Der Standardwert für mode ist Qt::IntersectsItemShape; es werden alle Elemente zurückgegeben, deren exakte Form sich mit polygon überschneidet oder von diesem enthalten wird.
Die Elemente werden in absteigender Stapelreihenfolge sortiert (d.h. das erste Element in der zurückgegebenen Liste ist das oberste Element).
Siehe auch itemAt(), items(), mapToScene(), und Sorting.
QList<QGraphicsItem *> QGraphicsView::items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
Dies ist eine überladene Funktion.
Gibt eine Liste aller Elemente zurück, die, abhängig von mode, entweder in rect enthalten sind oder sich mit schneiden. rect ist in Ansichtsfenster-Koordinaten.
Der Standardwert für mode ist Qt::IntersectsItemShape; es werden alle Elemente zurückgegeben, deren exakte Form sich mit rect überschneidet oder von diesem enthalten wird.
Die Elemente werden in absteigender Stapelreihenfolge sortiert (d.h. das erste Element in der zurückgegebenen Liste ist das oberste Element).
Siehe auch itemAt(), items(), mapToScene(), und Sorting.
[override virtual protected]
void QGraphicsView::keyPressEvent(QKeyEvent *event)
Reimplements: QAbstractScrollArea::keyPressEvent(QKeyEvent *e).
[override virtual protected]
void QGraphicsView::keyReleaseEvent(QKeyEvent *event)
Reimplements: QWidget::keyReleaseEvent(QKeyEvent *event).
QPainterPath QGraphicsView::mapFromScene(const QPainterPath &path) const
Gibt den Szenenkoordinaten-Malerpfad path zu einem Viewport-Koordinaten-Malerpfad zurück.
Siehe auch mapToScene().
QPoint QGraphicsView::mapFromScene(const QPointF &point) const
Gibt die Szenenkoordinaten point in Ansichtsfenster-Koordinaten zurück.
Siehe auch mapToScene().
QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const
Gibt das Szenenkoordinatenpolygon polygon zu einem Ansichtsfenster-Koordinatenpolygon zurück.
Siehe auch mapToScene().
QPolygon QGraphicsView::mapFromScene(const QRectF &rect) const
Gibt das Szenenrechteck rect zu einem Ansichtsfenster-Koordinatenpolygon zurück.
Siehe auch mapToScene().
QPoint QGraphicsView::mapFromScene(qreal x, qreal y) const
Diese Funktion wird aus Gründen der Bequemlichkeit bereitgestellt. Sie ist gleichbedeutend mit dem Aufruf von mapFromScene(QPointF(x, y)).
QPolygon QGraphicsView::mapFromScene(qreal x, qreal y, qreal w, qreal h) const
Diese Funktion wird der Einfachheit halber bereitgestellt. Sie entspricht dem Aufruf von mapFromScene(QRectF(x, y, w, h)).
QPainterPath QGraphicsView::mapToScene(const QPainterPath &path) const
Gibt den Viewport-Malerpfad path zurück, der auf einen Szenenkoordinaten-Malerpfad abgebildet ist.
Siehe auch mapFromScene().
QPointF QGraphicsView::mapToScene(const QPoint &point) const
Gibt die Koordinaten des Ansichtsfensters point zurück, die auf Szenenkoordinaten abgebildet sind.
Hinweis: Es kann nützlich sein, das gesamte Rechteck, das von dem Pixel auf point abgedeckt wird, anstelle des Punktes selbst abzubilden. Zu diesem Zweck können Sie mapToScene(QRect(point, QSize(2, 2))) aufrufen.
Siehe auch mapFromScene().
QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const
Gibt das Polygon des Ansichtsfensters polygon zurück, das auf ein Szenenkoordinatenpolygon abgebildet ist.
Siehe auch mapFromScene().
QPolygonF QGraphicsView::mapToScene(const QRect &rect) const
Gibt das Viewport-Rechteck rect zurück, das auf ein Szenenkoordinaten-Polygon abgebildet ist.
Siehe auch mapFromScene().
QPointF QGraphicsView::mapToScene(int x, int y) const
Diese Funktion wird der Einfachheit halber bereitgestellt. Sie ist gleichbedeutend mit dem Aufruf von mapToScene(QPoint(x, y)).
QPolygonF QGraphicsView::mapToScene(int x, int y, int w, int h) const
Diese Funktion wird der Einfachheit halber bereitgestellt. Sie entspricht dem Aufruf von mapToScene(QRect(x, y, w, h)).
[override virtual protected]
void QGraphicsView::mouseDoubleClickEvent(QMouseEvent *event)
Reimplements: QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e).
[override virtual protected]
void QGraphicsView::mouseMoveEvent(QMouseEvent *event)
Reimplements: QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e).
[override virtual protected]
void QGraphicsView::mousePressEvent(QMouseEvent *event)
Reimplements: QAbstractScrollArea::mousePressEvent(QMouseEvent *e).
[override virtual protected]
void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)
Reimplements: QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e).
[override virtual protected]
void QGraphicsView::paintEvent(QPaintEvent *event)
Reimplements: QAbstractScrollArea::paintEvent(QPaintEvent *event).
void QGraphicsView::render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
Rendert das source Rect, das in Ansichtskoordinaten vorliegt, aus der Szene in target, das in Malgerätkoordinaten vorliegt, unter Verwendung von painter. Diese Funktion ist nützlich, um den Inhalt der Ansicht auf ein Malgerät wie QImage zu übertragen (z.B. um einen Screenshot zu machen) oder um mit QPrinter zu drucken. Ein Beispiel:
QGraphicsScene scene; scene.addItem(... ... QGraphicsView view(&scene); view.show(); ... QPrinter printer(QPrinter::HighResolution); printer.setPageSize(QPrinter::A4); 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-Rect ist, wird diese Funktion viewport()->rect() verwenden, um zu bestimmen, was gezeichnet werden soll. Wenn target ein Null-Rect ist, werden die vollen Dimensionen des Malgeräts von painter verwendet (z.B. für einen QPrinter, die Seitengröße).
Der Inhalt des Quell-Rects wird gemäß aspectRatioMode transformiert, um in das Ziel-Rect 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 gelöscht. Wenn der aktuelle Cachemodus CacheNone ist, bewirkt diese Funktion nichts.
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 QGraphicsScene::drawBackground() oder QGraphicsView::drawBackground() neu implementiert haben, um einen benutzerdefinierten Hintergrund zu zeichnen, und einen vollständigen Neuaufbau auslösen müssen.
Siehe auch cacheMode().
void QGraphicsView::resetTransform()
Setzt die Ansichtstransformation auf die Identitätsmatrix zurück.
Siehe auch transform() und setTransform().
[override virtual protected]
void QGraphicsView::resizeEvent(QResizeEvent *event)
Reimplements: QAbstractScrollArea::resizeEvent(QResizeEvent *event).
void QGraphicsView::rotate(qreal angle)
Dreht die aktuelle Ansichtstransformation angle im Uhrzeigersinn.
Siehe auch setTransform(), transform(), scale(), shear(), und translate().
[signal]
void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)
Dieses Signal wird ausgegeben, wenn das Gummiband-Rect geändert wird. Das Viewport Rect wird mit rubberBandRect angegeben. Die Start- und Endposition für das Ziehen werden in Szenenpunkten mit fromScenePoint und toScenePoint angegeben.
Wenn die Gummibandauswahl endet, wird dieses Signal mit Nullwerten ausgegeben.
Siehe auch rubberBandRect().
QRect QGraphicsView::rubberBandRect() const
Diese Funktion gibt den aktuellen Gummibandbereich (in Viewport-Koordinaten) zurück, wenn der Benutzer gerade eine Elementauswahl mit Gummiband vornimmt. Wenn der Benutzer das Gummiband nicht benutzt, gibt diese Funktion (ein Null) QRectF() zurück.
Beachten Sie, dass ein Teil dieser QRect außerhalb des visuellen Darstellungsbereichs 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)
Reimplements: QAbstractScrollArea::scrollContentsBy(int dx, int dy).
void QGraphicsView::setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true)
Aktiviert flag, wenn enabled wahr ist; andernfalls wird flag deaktiviert.
Siehe auch optimizationFlags.
void QGraphicsView::setRenderHint(QPainter::RenderHint hint, bool enabled = true)
Wenn enabled true ist, ist der Rendering-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, bewirkt diese Funktion nichts.
Wenn eine Szene auf eine Ansicht gesetzt wird, wird das Signal QGraphicsScene::changed() automatisch mit dem updateScene()-Slot dieser Ansicht verbunden, und die Bildlaufleisten der Ansicht werden an die Größe der Szene angepasst.
Die Ansicht übernimmt nicht das Eigentum an scene.
Siehe auch scene().
void QGraphicsView::setTransform(const QTransform &matrix, bool combine = false)
Setzt die aktuelle Transformationsmatrix der Ansicht auf matrix.
Wenn combine wahr ist, wird matrix mit der aktuellen Matrix kombiniert; andernfalls ersetzt matrix die aktuelle Matrix. combine ist standardmäßig falsch.
Die Transformationsmatrix transformiert die Szene in Ansichtskoordinaten. Bei Verwendung der Standardtransformation, die durch die Identitätsmatrix bereitgestellt wird, entspricht ein Pixel in der Ansicht einer Einheit in der Szene (z. B. wird ein rechteckiges Objekt von 10x10 mit 10x10 Pixeln in der Ansicht gezeichnet). Bei Anwendung einer 2x2-Skalierungsmatrix wird die Szene im Verhältnis 1:2 gezeichnet (z. B. wird ein rechteckiges Element von 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 zu vereinfachen, die eine transformierte Ansicht verwenden, bietet QGraphicsView die Funktionen mapTo... und mapFrom... an, die zwischen den Koordinaten der Szene und der Ansicht übersetzen können. Sie können zum Beispiel mapToScene() aufrufen, um eine Ansichtskoordinate auf eine Fließkomma-Szenekoordinate abzubilden, oder mapFromScene(), um von Fließkomma-Szenekoordinaten auf Ansichtskoordinaten abzubilden.
Siehe auch transform(), resetTransform(), rotate(), scale(), shear(), und translate().
[override virtual protected slot]
void QGraphicsView::setupViewport(QWidget *widget)
Reimplements: QAbstractScrollArea::setupViewport(QWidget *viewport).
Dieser Slot wird von QAbstractScrollArea aufgerufen, nachdem setViewport() aufgerufen wurde. Reimplementieren Sie diese Funktion in einer Unterklasse von QGraphicsView, um das neue Viewport widget zu initialisieren, bevor es verwendet wird.
Siehe auch setViewport().
void QGraphicsView::shear(qreal sh, qreal sv)
Schert die aktuelle Ansichtstransformation um (sh, sv).
Siehe auch setTransform(), transform(), rotate(), scale(), und translate().
[override virtual protected]
void QGraphicsView::showEvent(QShowEvent *event)
Reimplements: QWidget::showEvent(QShowEvent *event).
[override virtual]
QSize QGraphicsView::sizeHint() const
Reimplements: QAbstractScrollArea::sizeHint() const.
QTransform QGraphicsView::transform() const
Gibt die aktuelle Transformationsmatrix für die Ansicht zurück. Wenn keine aktuelle Transformation gesetzt ist, wird die Identitätsmatrix zurückgegeben.
Siehe auch setTransform(), rotate(), scale(), shear(), und translate().
void QGraphicsView::translate(qreal dx, qreal dy)
Übersetzt die aktuelle Ansichtstransformation durch (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)
Informiert QGraphicsView, dass sich das Szenenrect der Szene geändert hat. rect ist das neue Szenenrect. Wenn die Ansicht bereits ein explizit festgelegtes Szenenrect hat, bewirkt diese Funktion nichts.
Siehe auch sceneRect und QGraphicsScene::sceneRectChanged().
[override virtual protected]
bool QGraphicsView::viewportEvent(QEvent *event)
Reimplements: QAbstractScrollArea::viewportEvent(QEvent *Event).
QTransform QGraphicsView::viewportTransform() const
Gibt eine Matrix zurück, die die Koordinaten der Szene auf die Koordinaten des Ansichtsfensters abbildet.
Siehe auch mapToScene() und mapFromScene().
[override virtual protected]
void QGraphicsView::wheelEvent(QWheelEvent *event)
Reimplements: QAbstractScrollArea::wheelEvent(QWheelEvent *e).
© 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.