En esta página

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:

QCheckBox, QPushButton, QRadioButton, y QToolButton

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

void clicked(bool checked = false)
void pressed()
void released()
void toggled(bool checked)

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:

  1. pressed() es emitida cuando el botón izquierdo del ratón es presionado mientras el cursor del ratón está dentro del botón.
  2. released() se emite cuando se suelta el botón izquierdo del ratón.
  3. 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().
  4. 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.

Véase también checked y clicked().

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