En esta página

QPushButton Class

El widget QPushButton proporciona un botón de comando. Más...

Cabecera: #include <QPushButton>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Hereda: QAbstractButton
Heredado por:

QCommandLinkButton

Propiedades

Funciones públicas

QPushButton(QWidget *parent = nullptr)
QPushButton(const QString &text, QWidget *parent = nullptr)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
virtual ~QPushButton()
bool autoDefault() const
bool isDefault() const
bool isFlat() const
QMenu *menu() const
void setAutoDefault(bool)
void setDefault(bool)
void setFlat(bool)
void setMenu(QMenu *menu)

Funciones públicas reimplementadas

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

Ranuras públicas

void showMenu()

Funciones protegidas

virtual void initStyleOption(QStyleOptionButton *option) const

Funciones protegidas reimplementadas

virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual bool hitButton(const QPoint &pos) const override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override

Descripción detallada

Pulsador para crear un nuevo documento

El botón pulsador, o botón de comando, es quizás el widget más utilizado en cualquier interfaz gráfica de usuario. Pulsa (haz clic) un botón para ordenar al ordenador que realice alguna acción, o para responder a una pregunta. Los botones típicos son Aceptar, Aplicar, Cancelar, Cerrar, Sí, No y Ayuda.

Un botón de comando es rectangular y suele mostrar una etiqueta de texto que describe su acción. Se puede especificar un atajo de teclado precediendo el carácter preferido con un ampersand en el texto. Por ejemplo:

QPushButton *button = new QPushButton("&Download", this);

En este ejemplo el atajo es Alt+D. Consulte la documentación de QShortcut para más detalles (para mostrar un ampersand real, utilice '&&').

Los pulsadores muestran una etiqueta textual y, opcionalmente, un pequeño icono. Estos elementos pueden definirse con los constructores y modificarse posteriormente con setText() y setIcon(). Si el botón está desactivado, el aspecto del texto y del icono se manipulará con respecto al estilo GUI para que el botón parezca "desactivado".

Un pulsador emite la señal clicked() cuando es activado por el ratón, la barra espaciadora o por un atajo de teclado. Conéctese a esta señal para realizar la acción del botón. Los botones pulsadores también proporcionan señales menos utilizadas, por ejemplo pressed() y released().

connect(dispenseButton, &QPushButton::clicked, this, &IceCreamMaker::dispense);

Los botones de comando de los cuadros de diálogo son, por defecto, botones predeterminados, es decir, se convierten automáticamente en el botón pulsador predeterminado cuando reciben el foco de entrada del teclado. Un botón por defecto es un pulsador que se activa cuando el usuario pulsa la tecla Intro o Retorno en un diálogo. Puede cambiar esto con setAutoDefault(). Tenga en cuenta que los botones auto-default reservan un pequeño espacio extra que es necesario para dibujar un indicador de botón default. Si no desea este espacio alrededor de sus botones, llame a setAutoDefault(false).

Al ser tan central, el widget de botón ha crecido para dar cabida a una gran cantidad de variaciones en la última década. La guía de estilo de Microsoft muestra ahora unos diez estados diferentes de los botones de Windows y el texto da a entender que hay docenas más cuando se tienen en cuenta todas las combinaciones de características.

Los modos o estados más importantes son:

  • Disponible o no (en gris, desactivado).
  • Botón pulsador estándar, botón pulsador de alternancia o botón de menú.
  • Activado o desactivado (sólo para los pulsadores basculantes).
  • Por defecto o normal. El botón por defecto de un cuadro de diálogo se puede "pulsar" generalmente con la tecla Intro o Retorno.
  • Repetición automática o no.
  • Pulsado o no.

Como norma general, utilice un botón pulsador cuando la aplicación o ventana de diálogo realice una acción cuando el usuario haga clic en él (como Aplicar, Cancelar, Cerrar y Ayuda) y cuando el widget deba tener una forma amplia y rectangular con una etiqueta de texto. Los botones pequeños, normalmente cuadrados, que cambian el estado de la ventana en lugar de realizar una acción (como los botones de la esquina superior derecha de QFileDialog) no son botones de comando, sino botones de herramienta. Qt proporciona una clase especial (QToolButton) para estos botones.

Si necesitas un comportamiento de conmutación (ver setCheckable()) o un botón que repita automáticamente la señal de activación al ser pulsado como las flechas de una barra de desplazamiento (ver setAutoRepeat()), un botón de comando probablemente no es lo que quieres. En caso de duda, utilice un botón de herramienta.

Nota: En macOS, cuando la anchura de un botón pulsador es inferior a 50 o su altura es inferior a 30, las esquinas del botón cambian de redondas a cuadradas. Utilice la función setMinimumSize() para evitar este comportamiento.

Una variación de un botón de comando es un botón de menú. Éstos no sólo proporcionan un comando, sino varios, ya que al pulsarlos se despliega un menú de opciones. Utilice el método setMenu() para asociar un menú emergente a un botón de mando.

Otras clases de botones son los botones de opción (véase QRadioButton) y las casillas de verificación (véase QCheckBox).

En Qt, la clase base QAbstractButton proporciona la mayoría de los modos y otras API, y QPushButton proporciona la lógica GUI. Consulte QAbstractButton para obtener más información sobre la API.

Véase también QToolButton, QRadioButton, y QCheckBox.

Documentación de propiedades

autoDefault : bool

Esta propiedad indica si el pulsador es un botón auto predeterminado.

Si esta propiedad es igual a true, entonces el botón pulsador es un botón auto predeterminado.

En algunos estilos de GUI un botón por defecto se dibuja con un marco extra a su alrededor, de hasta 3 píxeles o más. Qt mantiene automáticamente este espacio libre alrededor de los botones auto-default, es decir, los botones auto-default pueden tener una sugerencia de tamaño ligeramente mayor.

Esta propiedad es verdadera por defecto para los botones que tienen un padre QDialog; en caso contrario es falsa por defecto.

Véase la propiedad default para más detalles sobre cómo interactúan default y auto-default.

Funciones de acceso:

bool autoDefault() const
void setAutoDefault(bool)

default : bool

Esta propiedad mantiene si el botón pulsado es el botón por defecto

Los botones default y autodefault deciden qué ocurre cuando el usuario pulsa enter en un diálogo.

Un botón con esta propiedad establecida a true (es decir, el botón por defecto del diálogo) se pulsará automáticamente cuando el usuario pulse enter, con una excepción: si un botón autoDefault tiene actualmente el foco, se pulsará el botón autoDefault. Si el cuadro de diálogo tiene botones autoDefault pero no un botón predeterminado, al pulsar Intro se pulsará el botón autoDefault que tenga el foco en ese momento o, si no lo tiene ningún botón, el siguiente botón autoDefault de la cadena de foco.

En un cuadro de diálogo, sólo se puede pulsar un botón a la vez como botón predeterminado. Este botón se muestra con un marco adicional (dependiendo del estilo GUI).

El comportamiento del botón predeterminado sólo se proporciona en los diálogos. Los botones siempre se pueden pulsar desde el teclado pulsando la barra espaciadora cuando el botón tiene el foco.

Si la propiedad default se establece a false en el botón por defecto actual mientras el diálogo está visible, se asignará automáticamente un nuevo valor por defecto la próxima vez que un pulsador del diálogo reciba el foco.

El valor por defecto de esta propiedad es false.

Funciones de acceso:

bool isDefault() const
void setDefault(bool)

flat : bool

Esta propiedad indica si el borde del botón está levantado

El valor por defecto de esta propiedad es false. Si esta propiedad está establecida, la mayoría de los estilos no pintarán el fondo del botón a menos que el botón esté siendo presionado. setAutoFillBackground Se puede utilizar () para asegurarse de que el fondo se rellena utilizando el pincel QPalette::Button.

Funciones de acceso:

bool isFlat() const
void setFlat(bool)

Documentación de las funciones miembro

[explicit] QPushButton::QPushButton(QWidget *parent = nullptr)

Construye un pulsador sin texto y un parent.

[explicit] QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)

Construye un pulsador con el padre parent y el texto text.

QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)

Construye un pulsador con un icon y un text, y un parent.

Tenga en cuenta que también puede pasar un objeto QPixmap como icono (gracias a la conversión de tipos implícita que proporciona C++).

[virtual noexcept] QPushButton::~QPushButton()

Destruye el pulsador.

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

Reimplementa: QAbstractButton::event(QEvent *e).

[override virtual protected] void QPushButton::focusInEvent(QFocusEvent *e)

Reimplementa: QAbstractButton::focusInEvent(QFocusEvent *e).

[override virtual protected] void QPushButton::focusOutEvent(QFocusEvent *e)

Reimplementa: QAbstractButton::focusOutEvent(QFocusEvent *e).

[override virtual protected] bool QPushButton::hitButton(const QPoint &pos) const

Reimplementa: QAbstractButton::hitButton(const QPoint &pos) const.

[virtual protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const

Inicializa option con los valores de este QPushButton. Este método es útil para subclases cuando necesitan un QStyleOptionButton, pero no quieren rellenar toda la información ellos mismos.

Véase también QStyleOption::initFrom().

[override virtual protected] void QPushButton::keyPressEvent(QKeyEvent *e)

Reimplementa: QAbstractButton::keyPressEvent(QKeyEvent *e).

Devuelve el menú emergente asociado al botón o nullptr si no se ha establecido ningún menú emergente.

Véase también setMenu().

[override virtual] QSize QPushButton::minimumSizeHint() const

Reimplementa una función de acceso para la propiedad: QWidget::minimumSizeHint.

[override virtual protected] void QPushButton::mouseMoveEvent(QMouseEvent *e)

Reimplementa: QAbstractButton::mouseMoveEvent(QMouseEvent *e).

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

Reimplementa: QAbstractButton::paintEvent(QPaintEvent *e).

void QPushButton::setMenu(QMenu *menu)

Asocia el menú emergente menu con este botón. Esto convierte el botón en un botón de menú, que en algunos estilos producirá un pequeño triángulo a la derecha del texto del botón.

La propiedad del menú no se transfiere al pulsador.

Pulsador con menú emergente

Un botón pulsador con menús emergentes mostrado en el estilo widget Fusion.

Véase también menu().

[slot] void QPushButton::showMenu()

Muestra (hace aparecer) el menú emergente asociado. Si no existe tal menú, esta función no hace nada. Esta función no regresa hasta que el menú emergente haya sido cerrado por el usuario.

[override virtual] QSize QPushButton::sizeHint() const

Reimplementa una función de acceso para la propiedad: QWidget::sizeHint.

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