QAbstractButton Class
La clase QAbstractButton es la clase base abstracta de los widgets de botones, proporcionando funcionalidad común a los botones. Más...
| Cabecera: | #include <QAbstractButton> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Hereda: | QWidget |
| Heredado de: |
Propiedades
|
Funciones públicas
| QAbstractButton(QWidget *parent = nullptr) | |
| virtual | ~QAbstractButton() |
| bool | autoExclusive() const |
| bool | autoRepeat() const |
| int | autoRepeatDelay() const |
| int | autoRepeatInterval() const |
| QButtonGroup * | group() const |
| QIcon | icon() const |
| QSize | iconSize() const |
| bool | isCheckable() const |
| bool | isChecked() const |
| bool | isDown() const |
| void | setAutoExclusive(bool) |
| void | setAutoRepeat(bool) |
| void | setAutoRepeatDelay(int) |
| void | setAutoRepeatInterval(int) |
| void | setCheckable(bool) |
| void | setDown(bool) |
| void | setIcon(const QIcon &icon) |
| void | setShortcut(const QKeySequence &key) |
| void | setText(const QString &text) |
| QKeySequence | shortcut() const |
| QString | text() const |
Ranuras públicas
| void | animateClick() |
| void | click() |
| void | setChecked(bool) |
| void | setIconSize(const QSize &size) |
| void | toggle() |
Señales
Funciones protegidas
| virtual void | checkStateSet() |
| virtual bool | hitButton(const QPoint &pos) const |
| virtual void | nextCheckState() |
Funciones protegidas reimplementadas
| virtual void | changeEvent(QEvent *e) override |
| virtual bool | event(QEvent *e) override |
| virtual void | focusInEvent(QFocusEvent *e) override |
| virtual void | focusOutEvent(QFocusEvent *e) override |
| virtual void | keyPressEvent(QKeyEvent *e) override |
| virtual void | keyReleaseEvent(QKeyEvent *e) override |
| virtual void | mouseMoveEvent(QMouseEvent *e) override |
| virtual void | mousePressEvent(QMouseEvent *e) override |
| virtual void | mouseReleaseEvent(QMouseEvent *e) override |
| virtual void | paintEvent(QPaintEvent *e) override = 0 |
| virtual void | timerEvent(QTimerEvent *e) override |
Descripción detallada
Esta clase implementa un botón abstracto. Las subclases de esta clase manejan las acciones del usuario, y especifican como se dibuja el botón.
QAbstractButton provee soporte tanto para botones push como para botones checkable (toggle). Los botones comprobables se implementan en las clases QRadioButton y QCheckBox. Los botones pulsadores se implementan en las clases QPushButton y QToolButton; éstas también proporcionan un comportamiento de alternancia si es necesario.
Cualquier botón puede mostrar una etiqueta con texto y un icono. setText() define el texto; setIcon() define el icono. Si un botón está desactivado, su etiqueta se modifica para darle un aspecto de "desactivado".
Si el botón es un botón de texto con una cadena que contiene un ampersand ('&'), QAbstractButton crea automáticamente una tecla de acceso directo. Por ejemplo:
QPushButton *button = new QPushButton(tr("Ro&ck && Roll"), this);
El atajo Alt+C se asigna al botón, es decir, cuando el usuario pulsa Alt+C el botón llamará a animateClick(). Para más detalles, consulte la documentación de QShortcut. Para mostrar un ampersand real, utilice '&&'.
También puede establecer un atajo de teclado personalizado utilizando la función setShortcut(). Esto es útil sobre todo para los botones que no tienen ningún texto, y por lo tanto no pueden tener ningún atajo automático.
button->setIcon(QIcon(":/images/print.png")); button->setShortcut(tr("Alt+F7"));
Todos los botones proporcionados por Qt (QPushButton, QToolButton, QCheckBox, y QRadioButton) pueden mostrar tanto text como icons.
Un botón puede convertirse en el botón por defecto de un diálogo mediante QPushButton::setDefault() y QPushButton::setAutoDefault().
QAbstractButton proporciona la mayoría de los estados utilizados para los botones:
- isDown() indica si el botón está pulsado.
- isChecked() indica si el botón está marcado. Sólo los botones que se pueden marcar pueden marcarse y desmarcarse (ver más abajo).
- isEnabled() indica si el botón puede ser pulsado por el usuario.
Nota: A diferencia de otros widgets, los botones derivados de QAbstractButton aceptan eventos del ratón y del menú contextual cuando están desactivados.
- setAutoRepeat() establece si el botón se repetirá automáticamente si el usuario lo mantiene pulsado. autoRepeatDelay y autoRepeatInterval definen cómo se realiza la repetición automática.
- setCheckable() establece si el botón es un botón de conmutación o no.
La diferencia entre isDown() y isChecked() es la siguiente. Cuando el usuario hace clic en un botón de conmutación para marcarlo, primero se pulsa el botón y luego se suelta para que quede marcado. Cuando el usuario vuelve a pulsarlo (para desmarcarlo), el botón pasa primero al estado pulsado y luego al estado desmarcado (isChecked() y isDown() son ambos falsos).
QAbstractButton proporciona cuatro señales:
- pressed() es emitida cuando el botón izquierdo del ratón es presionado mientras el cursor del ratón está dentro del botón.
- released() se emite cuando se suelta el botón izquierdo del ratón.
- clicked() se emite cuando el botón se pulsa por primera vez y luego se suelta, cuando se teclea la tecla de acceso directo, o cuando se llama a click() o animateClick().
- toggled() se emite cuando el estado de un botón cambia.
Para subclasificar QAbstractButton, debes reimplementar al menos paintEvent() para dibujar el contorno del botón y su texto o pixmap. Generalmente es aconsejable reimplementar sizeHint() también, y a veces hitButton() (para determinar si una pulsación de botón está dentro del botón). Para los botones con más de dos estados (como los botones triestado), también tendrá que reimplementar checkStateSet() y nextCheckState().
Véase también QButtonGroup.
Documentación de propiedades
autoExclusive : bool
Esta propiedad indica si la auto-exclusividad está activada.
Si la auto-exclusividad está activada, los botones seleccionables que pertenecen al mismo widget padre se comportan como si formaran parte del mismo grupo de botones exclusivos. En un grupo de botones exclusivos, sólo se puede marcar un botón a la vez; si se marca otro botón, automáticamente se desmarca el que estaba marcado anteriormente.
Esta propiedad no tiene ningún efecto sobre los botones que pertenecen a un grupo de botones.
autoExclusive está desactivada por defecto, excepto para los botones de radio.
Funciones de acceso:
| bool | autoExclusive() const |
| void | setAutoExclusive(bool) |
Véase también QRadioButton.
autoRepeat : bool
Esta propiedad indica si la función autoRepeat está activada.
Si autoRepeat está activado, las señales pressed(), released(), y clicked() se emiten a intervalos regulares cuando el botón está pulsado. autoRepeat está desactivado por defecto. El retardo inicial y el intervalo de repetición se definen en milisegundos mediante autoRepeatDelay y autoRepeatInterval.
Nota: Si se pulsa un botón con un atajo de teclado, la repetición automática será activada y programada por el sistema y no por esta clase. Las señales pressed(), released(), y clicked() se emitirán como en el caso normal.
Funciones de acceso:
| bool | autoRepeat() const |
| void | setAutoRepeat(bool) |
autoRepeatDelay : int
Esta propiedad contiene el retardo inicial de la auto-repetición
Si autoRepeat está habilitado, entonces autoRepeatDelay define el retardo inicial en milisegundos antes de que la auto-repetición se active.
Funciones de acceso:
| int | autoRepeatDelay() const |
| void | setAutoRepeatDelay(int) |
Ver también autoRepeat y autoRepeatInterval.
autoRepeatInterval : int
Esta propiedad contiene el intervalo de auto-repetición
Si autoRepeat está habilitado, entonces autoRepeatInterval define la longitud del intervalo de auto-repetición en milisegundos.
Funciones de acceso:
| int | autoRepeatInterval() const |
| void | setAutoRepeatInterval(int) |
Ver también autoRepeat y autoRepeatDelay.
checkable : bool
Esta propiedad indica si el botón es comprobable
Por defecto, el botón no es comprobable.
Funciones de acceso:
| bool | isCheckable() const |
| void | setCheckable(bool) |
Véase también checked.
checked : bool
Esta propiedad indica si el botón está marcado
Sólo los botones que se pueden marcar pueden estar marcados. Por defecto, el botón no está marcado.
Funciones de acceso:
| bool | isChecked() const |
| void | setChecked(bool) |
Señal del notificador:
| void | toggled(bool checked) |
Véase también checkable.
down : bool
Esta propiedad indica si el botón está pulsado.
Si esta propiedad es true, el botón está pulsado. Las señales pressed() y clicked() no se emiten si se establece esta propiedad a true. El valor por defecto es false.
Funciones de acceso:
| bool | isDown() const |
| void | setDown(bool) |
icon : QIcon
Esta propiedad contiene el icono mostrado en el botón
El tamaño por defecto del icono viene definido por el estilo GUI, pero puede ajustarse configurando la propiedad iconSize.
Funciones de acceso:
| QIcon | icon() const |
| void | setIcon(const QIcon &icon) |
iconSize : QSize
Esta propiedad contiene el tamaño del icono utilizado para este botón.
El tamaño por defecto está definido por el estilo GUI. Este es un tamaño máximo para los iconos. Los iconos más pequeños no se escalarán.
Funciones de acceso:
| QSize | iconSize() const |
| void | setIconSize(const QSize &size) |
shortcut : QKeySequence
Esta propiedad contiene el mnemónico asociado al botón
Funciones de acceso:
| QKeySequence | shortcut() const |
| void | setShortcut(const QKeySequence &key) |
text : QString
Esta propiedad contiene el texto mostrado en el botón
Si el botón no tiene texto, la función text() devolverá una cadena vacía.
Si el texto contiene un carácter ampersand ('&'), se creará automáticamente un atajo para él. El carácter que sigue a "&" se utilizará como tecla de acceso directo. Cualquier atajo anterior se sobrescribirá o se borrará si el texto no define ningún atajo. Consulte la documentación de QShortcut para más detalles. Para mostrar un ampersand real, utilice '&&'.
No hay texto por defecto.
Funciones de acceso:
| QString | text() const |
| void | setText(const QString &text) |
Documentación de funciones miembro
[explicit] QAbstractButton::QAbstractButton(QWidget *parent = nullptr)
Construye un botón abstracto con parent.
[virtual noexcept] QAbstractButton::~QAbstractButton()
Destruye el botón.
[slot] void QAbstractButton::animateClick()
Realiza un clic animado: el botón se pulsa inmediatamente y se suelta 100 ms después.
Si se vuelve a llamar a esta función antes de soltar el botón, se reinicia el temporizador de liberación.
Todas las señales asociadas a un clic se emiten según corresponda.
Esta función no hace nada si el botón está disabled.
Véase también click().
[override virtual protected] void QAbstractButton::changeEvent(QEvent *e)
Reimplementa: QWidget::changeEvent(QEvent *event).
[virtual protected] void QAbstractButton::checkStateSet()
Este manejador virtual es llamado cuando se utiliza setChecked(), a menos que sea llamado desde dentro de nextCheckState(). Permite a las subclases restablecer los estados intermedios de sus botones.
Véase también nextCheckState().
[slot] void QAbstractButton::click()
Realiza un clic.
Se emiten todas las señales habituales asociadas a un clic. Si el botón es controlable, se conmuta su estado.
Esta función no hace nada si el botón es disabled.
Véase también animateClick().
[signal] void QAbstractButton::clicked(bool checked = false)
Esta señal se emite cuando se activa el botón (es decir, cuando se pulsa y luego se suelta mientras el cursor del ratón está dentro del botón), cuando se teclea la tecla de acceso directo o cuando se llama a click() o animateClick(). En particular, esta señal no se emite si se llama a setDown(), setChecked() o toggle().
Si el botón es comprobable, checked es verdadero si el botón está marcado, o falso si el botón está desmarcado.
Véase también pressed(), released() y toggled().
[override virtual protected] bool QAbstractButton::event(QEvent *e)
Reimplementa: QWidget::event(QEvent *event).
[override virtual protected] void QAbstractButton::focusInEvent(QFocusEvent *e)
Reimplementa: QWidget::focusInEvent(QFocusEvent *event).
[override virtual protected] void QAbstractButton::focusOutEvent(QFocusEvent *e)
Reimplementa: QWidget::focusOutEvent(QFocusEvent *event).
QButtonGroup *QAbstractButton::group() const
Devuelve el grupo al que pertenece este botón.
Si el botón no pertenece a ningún grupo QButtonGroup, esta función devuelve nullptr.
Véase también QButtonGroup.
[virtual protected] bool QAbstractButton::hitButton(const QPoint &pos) const
Devuelve true si pos está dentro del rectángulo del botón sobre el que se puede hacer clic; en caso contrario, devuelve false.
Por defecto, el área sobre la que se puede hacer clic es todo el widget. Las subclases pueden reimplementar esta función para dar soporte a áreas clicables de diferentes formas y tamaños.
[override virtual protected] void QAbstractButton::keyPressEvent(QKeyEvent *e)
Reimplementa: QWidget::keyPressEvent(QKeyEvent *event).
[override virtual protected] void QAbstractButton::keyReleaseEvent(QKeyEvent *e)
Reimplementa: QWidget::keyReleaseEvent(QKeyEvent *event).
[override virtual protected] void QAbstractButton::mouseMoveEvent(QMouseEvent *e)
Reimplementa: QWidget::mouseMoveEvent(QMouseEvent *event).
[override virtual protected] void QAbstractButton::mousePressEvent(QMouseEvent *e)
Reimplementa: QWidget::mousePressEvent(QMouseEvent *event).
[override virtual protected] void QAbstractButton::mouseReleaseEvent(QMouseEvent *e)
Reimplementa: QWidget::mouseReleaseEvent(QMouseEvent *event).
[virtual protected] void QAbstractButton::nextCheckState()
Este manejador virtual es llamado cuando se pulsa un botón. La implementación por defecto llama a setChecked(!isChecked()) si el botón isCheckable(). Permite a las subclases implementar estados intermedios del botón.
Véase también checkStateSet().
[override pure virtual protected] void QAbstractButton::paintEvent(QPaintEvent *e)
Reimplementa: QWidget::paintEvent(QPaintEvent *event).
[signal] void QAbstractButton::pressed()
Esta señal se emite cuando se pulsa el botón.
Véase también released() y clicked().
[signal] void QAbstractButton::released()
Esta señal se emite cuando se suelta el botón.
Véase también pressed(), clicked() y toggled().
[override virtual protected] void QAbstractButton::timerEvent(QTimerEvent *e)
Reimplementa: QObject::timerEvent(QTimerEvent *event).
[slot] void QAbstractButton::toggle()
Cambia el estado de un botón seleccionable.
Véase también checked.
[signal] void QAbstractButton::toggled(bool checked)
Esta señal se emite cada vez que un botón seleccionable cambia de estado. checked es verdadero si el botón está seleccionado, o falso si el botón está deseleccionado.
Esto puede ser el resultado de una acción del usuario, de la activación de la ranura click() o porque se llama a setChecked().
Los estados de los botones en grupos de botones exclusivos se actualizan antes de que se emita esta señal. Esto significa que las ranuras pueden actuar tanto sobre la señal "off" como sobre la señal "on" emitida por los botones del grupo cuyos estados han cambiado.
Por ejemplo, una ranura que reacciona a las señales emitidas por los botones recién marcados pero que ignora las señales de los botones que han sido desmarcados puede implementarse utilizando el siguiente patrón:
void MyWidget::reactToToggle(bool checked) { if (checked) { // Examine the new button states. ... } }
Se pueden crear grupos de botones utilizando la clase QButtonGroup, y monitorizar las actualizaciones de los estados de los botones con la señal QButtonGroup::buttonClicked().
Nota: Señal notificadora para la propiedad checked.
© 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.