QRubberBand Class
La clase QRubberBand proporciona un rectángulo o línea que puede indicar una selección o un límite. Más...
| Cabecera: | #include <QRubberBand> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QWidget |
Tipos Públicos
| enum | Shape { Line, Rectangle } |
Funciones Públicas
| 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 |
Funciones protegidas
| virtual void | initStyleOption(QStyleOptionRubberBand *option) const |
Funciones protegidas reimplementadas
| 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 |
Descripción detallada
Una banda elástica se utiliza a menudo para mostrar una nueva área de delimitación (como en un QSplitter o un QDockWidget que se está desacoplando). Históricamente esto se ha implementado usando un QPainter y XOR, pero este enfoque no siempre funciona correctamente ya que el renderizado puede ocurrir en la ventana debajo de la banda elástica, pero antes de que la banda elástica haya sido "borrada".
Puedes crear una QRubberBand siempre que necesites renderizar una goma elástica alrededor de un área determinada (o para representar una sola línea), y luego llamar a setGeometry(), move() o resize() para posicionarla y dimensionarla. Un patrón común es hacer esto en conjunción con los eventos del ratón. Por ejemplo:
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(). }
Si pasas un padre al constructor de QRubberBand, la banda elástica se mostrará sólo dentro de su padre, pero se mantiene encima de otros widgets hijos. Si no se pasa ningún padre, QRubberBand actuará como un widget de nivel superior.
Llama a show() para hacer visible la banda elástica; también cuando la banda elástica no es de nivel superior. Ocultar o destruir el widget hará desaparecer la goma elástica. La goma elástica puede ser un Rectangle o un Line (vertical u horizontal), dependiendo del shape() que se le haya dado al construirla.
Documentación de tipos de miembros
enum QRubberBand::Shape
Este enum especifica la forma que debe tener un QRubberBand. Se trata de una sugerencia de dibujo que se transmite al sistema de estilos y que puede ser interpretada por cada QStyle.
| Constante | Valor | Descripción |
|---|---|---|
QRubberBand::Line | 0 | Un QRubberBand puede representar una línea vertical u horizontal. La geometría se sigue indicando en rect() y la línea rellenará la geometría indicada en la mayoría de los estilos. |
QRubberBand::Rectangle | 1 | QRubberBand puede representar un rectángulo. Algunos estilos lo interpretarán como un rectángulo relleno (a menudo semitransparente) o un contorno rectangular. |
Documentación de las funciones miembro
[explicit] QRubberBand::QRubberBand(QRubberBand::Shape s, QWidget *p = nullptr)
Construye una banda elástica de la forma s, con el padre p.
Por defecto, una banda elástica rectangular (s es Rectangle) utilizará una máscara, de modo que un pequeño borde del rectángulo es todo lo que es visible. Algunos estilos (por ejemplo, macOS nativo) cambiarán esto y llamarán a QWidget::setWindowOpacity() para hacer un rectángulo de selección relleno semitransparente.
[virtual noexcept] QRubberBand::~QRubberBand()
Destructor.
[override virtual protected] void QRubberBand::changeEvent(QEvent *e)
Reimplementa: QWidget::changeEvent(QEvent *event).
[override virtual protected] bool QRubberBand::event(QEvent *e)
Reimplementa: QWidget::event(QEvent *event).
[virtual protected] void QRubberBand::initStyleOption(QStyleOptionRubberBand *option) const
Inicializa option con los valores de este QRubberBand. Este método es útil para subclases cuando necesitan un QStyleOptionRubberBand, pero no quieren rellenar toda la información ellos mismos.
Véase también QStyleOption::initFrom().
void QRubberBand::move(int x, int y)
Mueve la banda elástica al punto (x, y).
Véase también resize().
void QRubberBand::move(const QPoint &p)
Mueve la goma elástica al punto p.
Se trata de una función sobrecargada.
Véase también resize().
[override virtual protected] void QRubberBand::moveEvent(QMoveEvent *)
Reimplementa: QWidget::moveEvent(QMoveEvent *event).
[override virtual protected] void QRubberBand::paintEvent(QPaintEvent *)
Reimplementa: QWidget::paintEvent(QPaintEvent *event).
void QRubberBand::resize(int width, int height)
Cambia el tamaño de la goma elástica para que su anchura sea width, y su altura height.
Véase también move().
void QRubberBand::resize(const QSize &size)
Redimensiona la goma elástica para que su nuevo tamaño sea size.
Se trata de una función sobrecargada.
Véase también move().
[override virtual protected] void QRubberBand::resizeEvent(QResizeEvent *)
Reimplementa: QWidget::resizeEvent(QResizeEvent *event).
void QRubberBand::setGeometry(const QRect &rect)
Establece la geometría de la banda elástica en rect, especificada en el sistema de coordenadas de su widget padre.
Véase también QWidget::geometry.
void QRubberBand::setGeometry(int x, int y, int width, int height)
Establece la geometría de la goma elástica en el rectángulo cuya esquina superior izquierda se encuentra en el punto (x, y), y con las dimensiones especificadas por width y height. La geometría se especifica en el sistema de coordenadas del widget padre.
Se trata de una función sobrecargada.
QRubberBand::Shape QRubberBand::shape() const
Devuelve la forma de esta goma elástica. La forma sólo se puede establecer en el momento de la construcción.
[override virtual protected] void QRubberBand::showEvent(QShowEvent *e)
Reimplementa: 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.