Auf dieser Seite

QRubberBand Class

Die Klasse „QRubberBand“ stellt ein Rechteck oder eine Linie bereit, die eine Auswahl oder eine Begrenzung kennzeichnen kann. Mehr...

Header: #include <QRubberBand>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QWidget

Öffentliche Typen

enum Shape { Line, Rectangle }

Öffentliche Funktionen

QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)
virtual ~QRubberBand()
void move(int x, int y)
void move(const QPoint &p)
void resize(int width, int height)
void resize(const QSize &size)
void setGeometry(const QRect &rect)
void setGeometry(int x, int y, int width, int height)
QRubberBand::Shape shape() const

Geschützte Funktionen

virtual void initStyleOption(QStyleOptionRubberBand *option) const

Neu implementierte geschützte Funktionen

virtual void changeEvent(QEvent *e) override
virtual bool event(QEvent *e) override
virtual void moveEvent(QMoveEvent *) override
virtual void paintEvent(QPaintEvent *) override
virtual void resizeEvent(QResizeEvent *) override
virtual void showEvent(QShowEvent *e) override

Ausführliche Beschreibung

Ein Gummiband wird häufig verwendet, um einen neuen Begrenzungsbereich darzustellen (wie bei einem „ QSplitter “ oder einem „ QDockWidget “, das sich vom Dock löst). In der Vergangenheit wurde dies mithilfe von „ QPainter “ und XOR implementiert, doch dieser Ansatz funktioniert nicht immer einwandfrei, da das Rendern im Fenster unterhalb des Gummibands erfolgen kann, bevor das Gummiband „gelöscht“ wurde.

Sie können ein QRubberBand erstellen, wann immer Sie ein Gummiband um einen bestimmten Bereich rendern müssen (oder um eine einzelne Linie darzustellen), und dann setGeometry(), move() oder resize() aufrufen, um es zu positionieren und seine Größe anzupassen. Ein gängiges Muster ist es, dies in Verbindung mit Mausereignissen zu tun. Zum Beispiel:

void Widget::mousePressEvent(QMouseEvent *event)
{
    origin = event->pos();
    if (!rubberBand)
        rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
    rubberBand->setGeometry(QRect(origin, QSize()));
    rubberBand->show();
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
}

void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    rubberBand->hide();
    // determine selection, for example using QRect::intersects()
    // and QRect::contains().
}

Wenn Sie dem Konstruktor von QRubberBand ein übergeordnetes Element übergeben, wird das Gummiband nur innerhalb dieses übergeordneten Elements angezeigt, bleibt jedoch über anderen untergeordneten Widgets. Wird kein übergeordnetes Element übergeben, verhält sich QRubberBand wie ein Widget der obersten Ebene.

Rufen Sie ` show()` auf, um das Rubber Band sichtbar zu machen; dies gilt auch, wenn das Rubber Band kein Top-Level-Widget ist. Durch das Ausblenden oder Löschen des Widgets verschwindet das Rubber Band. Das Rubber Band kann ein ` Rectangle ` oder ein ` Line ` (vertikal oder horizontal) sein, je nachdem, welche ` shape()`-Einstellung bei der Erstellung festgelegt wurde.

Dokumentation zum Mitgliedstyp

enum QRubberBand::Shape

Diese Enumeration legt fest, welche Form ein „ QRubberBand “ haben soll. Dabei handelt es sich um einen Zeichnungshinweis, der an das Stilsystem weitergegeben wird und von jedem „ QStyle “ interpretiert werden kann.

KonstanteWertBeschreibung
QRubberBand::Line0Ein „ QRubberBand “ kann eine vertikale oder horizontale Linie darstellen. Die Geometrie wird weiterhin in ` rect()` angegeben, und die Linie füllt bei den meisten Stilen die angegebene Geometrie aus.
QRubberBand::Rectangle1Ein „ QRubberBand “ kann ein Rechteck darstellen. Einige Stile interpretieren dies als gefülltes (oft halbtransparentes) Rechteck oder als rechteckigen Umriss.

Dokumentation der Member-Funktionen

[explicit] QRubberBand::QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)

Erstellt ein Gummiband mit der Form s und dem übergeordneten Element p.

Standardmäßig verwendet ein rechteckiges Gummiband (s ist Rectangle) eine Maske, sodass nur ein schmaler Rand des Rechtecks sichtbar ist. Einige Stile (z. B. das native macOS) ändern dies und rufen QWidget::setWindowOpacity() auf, um ein halbtransparentes, gefülltes Auswahlrechteck zu erzeugen.

[virtual noexcept] QRubberBand::~QRubberBand()

Destruktor.

[override virtual protected] void QRubberBand::changeEvent(QEvent *e)

Umsetzt: ` QWidget::changeEvent(QEvent *event)`.

[override virtual protected] bool QRubberBand::event(QEvent *e)

Umsetzt: ` QWidget::event(QEvent *event)`.

[virtual protected] void QRubberBand::initStyleOption(QStyleOptionRubberBand *option) const

Initialisieren Sie „ option “ mit den Werten aus dieser Datei: QRubberBand. Diese Methode ist für Unterklassen nützlich, wenn diese ein „ QStyleOptionRubberBand “ benötigen, aber nicht alle Informationen selbst eingeben möchten.

Siehe auch QStyleOption::initFrom().

void QRubberBand::move(int x, int y)

Verschiebt das Gummiband an die Stelle (x, y).

Siehe auch resize().

void QRubberBand::move(const QPoint &p)

Verschiebt das Gummiband auf den Punkt p.

Dies ist eine überladene Funktion.

Siehe auch resize().

[override virtual protected] void QRubberBand::moveEvent(QMoveEvent *)

Implementiert: ` QWidget::moveEvent(QMoveEvent *event)`.

[override virtual protected] void QRubberBand::paintEvent(QPaintEvent *)

Umsetzt: QWidget::paintEvent(QPaintEvent *event).

void QRubberBand::resize(int width, int height)

Passen Sie die Größe des Gummibands so an, dass seine Breite width und seine Höhe height beträgt.

Siehe auch move().

void QRubberBand::resize(const QSize &size)

Passen Sie die Größe des Gummibands so an, dass seine neue Größe size beträgt.

Dies ist eine überladene Funktion.

Siehe auch move().

[override virtual protected] void QRubberBand::resizeEvent(QResizeEvent *)

Implementiert: ` QWidget::resizeEvent(QResizeEvent *event)`.

void QRubberBand::setGeometry(const QRect &rect)

Legt die Geometrie des Gummibands auf „ rect “ fest, angegeben im Koordinatensystem seines übergeordneten Widgets.

Siehe auch „ QWidget::geometry “.

void QRubberBand::setGeometry(int x, int y, int width, int height)

Legt die Geometrie des Gummibands als Rechteck fest, dessen linke obere Ecke am Punkt (x, y) liegt und dessen Abmessungen durch width und height festgelegt sind. Die Geometrie wird im Koordinatensystem des übergeordneten Widgets angegeben.

Dies ist eine überladene Funktion.

QRubberBand::Shape QRubberBand::shape() const

Gibt die Form dieses Gummibands zurück. Die Form kann nur bei der Erstellung festgelegt werden.

[override virtual protected] void QRubberBand::showEvent(QShowEvent *e)

Implementiert: ` QWidget::showEvent(QShowEvent *event)`.

© 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.