QRubberBand Class

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

Kopfzeile: #include <QRubberBand>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbt: 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

Reimplementierte 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

Detaillierte Beschreibung

Ein Gummiband wird häufig verwendet, um einen neuen Begrenzungsbereich anzuzeigen (z. B. in einem QSplitter oder einem QDockWidget, das abgedockt wird). In der Vergangenheit wurde dies mit QPainter und XOR implementiert, aber dieser Ansatz funktioniert nicht immer richtig, da das Rendering im Fenster unterhalb des Gummibandes stattfinden kann, aber bevor das Gummiband "gelöscht" wurde.

Sie können ein QRubberBand immer dann erstellen, wenn 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 zu vergrößern. Häufig wird dies in Verbindung mit Mausereignissen durchgeführt. Ein 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 Elternteil übergeben, wird das Gummiband nur innerhalb seines Elternteils angezeigt, bleibt aber über den anderen Kind-Widgets. Wenn kein Elternteil übergeben wird, agiert QRubberBand als Top-Level-Widget.

Rufe show() auf, um das Gummiband sichtbar zu machen; auch wenn das Gummiband kein Top-Level-Widget ist. Das Ausblenden oder Zerstören des Widgets lässt das Gummiband verschwinden. Das Gummiband kann ein Rectangle oder ein Line (vertikal oder horizontal) sein, abhängig von der shape(), die ihm bei der Erstellung gegeben wurde.

Dokumentation der Mitgliedstypen

enum QRubberBand::Shape

Diese Aufzählung gibt an, welche Form ein QRubberBand haben sollte. Dies ist ein Zeichenhinweis, der an das Stylesystem weitergegeben wird und von jedem QStyle interpretiert werden kann.

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

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein Gummiband der Form s, mit dem übergeordneten p.

Standardmäßig wird ein rechteckiges Gummiband (s ist Rectangle) eine Maske verwenden, so dass nur ein kleiner Rand des Rechtecks sichtbar ist. Einige Stile (z. B. natives macOS) ändern dies und rufen QWidget::setWindowOpacity() auf, um ein halbtransparentes, gefülltes Auswahlrechteck zu erzeugen.

[virtual noexcept] QRubberBand::~QRubberBand()

Zerstörer.

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

Reimplements: QWidget::changeEvent(QEvent *Event).

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

Reimplements: QWidget::event(QEvent *Event).

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

Initialisieren Sie option mit den Werten aus dieser QRubberBand. Diese Methode ist nützlich für Unterklassen, wenn sie eine QStyleOptionRubberBand benötigen, aber nicht alle Informationen selbst eingeben wollen.

Siehe auch QStyleOption::initFrom().

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

Bewegt das Gummiband zum Punkt (x, y).

Siehe auch resize().

void QRubberBand::move(const QPoint &p)

Dies ist eine überladene Funktion.

Bewegt das Gummiband zum Punkt p.

Siehe auch resize().

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

Reimplements: QWidget::moveEvent(QMoveEvent *event).

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

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

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

Ändert die Größe des Gummibandes so, dass seine Breite width und seine Höhe height ist.

Siehe auch move().

void QRubberBand::resize(const QSize &size)

Dies ist eine überladene Funktion.

Ändert die Größe des Gummibandes so, dass seine neue Größe size ist.

Siehe auch move().

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

Reimplements: QWidget::resizeEvent(QResizeEvent *event).

void QRubberBand::setGeometry(const QRect &rect)

Setzt die Geometrie des Gummibandes auf rect, angegeben im Koordinatensystem des übergeordneten Widgets.

Siehe auch QWidget::geometry.

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

Dies ist eine überladene Funktion.

Setzt die Geometrie des Gummibandes auf das Rechteck, 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.

QRubberBand::Shape QRubberBand::shape() const

Gibt die Form dieses Gummibandes zurück. Die Form kann nur bei der Konstruktion festgelegt werden.

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

Reimplements: QWidget::showEvent(QShowEvent *event).

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