QPushButton & QLabel widgets Qt

El widget representado por la clase QPushButton del Framework Qt está diseñado para responder a la interacción del usuario hecha mediante los clic del ratón, es una área rectangular que puede contener un texto, un icono o ambos, un QPushButton emite el signal clicked() cuando se presiona el mismo, aunque también puede emitir otros como: pressed() and released(), aunque usualmente utilizamos el primero.

Crear un QPushButton

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

El primero parámetro corresponde al texto que mostrará, podemos apreciar el símbolo &, con él podemos definir la letra que será usada como atajo de teclado para activar la acción del botón, en este ejemplo usaríamos la combinación de teclas Alt+D, el último parámetro define el widget padre.

También podemos usar los métodos setText(QString) para cambiar el texto y setIcon(QIcon) para establecer el icono que se muestra dentro del botón.

QPushButton *btn1 = new QPushButton("Click 1");
btn1->setText("Text");
btn1->setIcon(QIcon(":/disc.png"));

El icono debe encontrarse dentro del archivo de recursos, de no ser así debe cambiar la ruta para apuntar directamente a la imagen.

QPushButton con icono o imagen

Usualmente deseamos ejecutar una acción cada vez que el usuario haga clic en el botón, para ello usamos los Signal & Slot de Qt al recibir un clic el botón emite un signal clicked solo debemos conectarlo al slot deseado.

#include <QApplication>
#include <QWidget>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget widget;

    QPushButton *btnExit = new QPushButton("Click para salir...", &widget);
    btnExit->setGeometry(10, 10, 250, 30);

    QObject::connect(btnExit, &QPushButton::clicked, &widget, &QWidget::close);

    widget.setWindowTitle("QPushButton");
    widget.resize(800, 600);
    widget.show();

    return a.exec();
}

Usamos el método QObject::connect() para conectar el signal clicked con el slot close de la ventana.

QPushButton clic en botón

Al hacer clic la ventana se cierra.

Crear un QLabel

Este widget nos permite mostrar etiquetas de texto o imágenes, este control no permite interacción con el usuario, el texto a mostrar se puede indicar en el constructor o usando el método setText(QString).

QLabel *lbl = new QLabel("Este es un mensaje <br/> <b>importante</b>...", &widget);
lbl->setGeometry(10, 50, 250, 60);
lbl->setFont(QFont("Segoe UI Light", 12));

Como vemos el mensaje de texto puede contener etiquetas HTML, por medio del método setFont(QFont) establecemos la fuente usada para mostrar el texto.

QLabel contenido HTML

En caso de que desees alinear el texto puede usar setAlignment(Qt::AlignBottom | Qt::AlignRight) para indicar la alineación a utilizar, como vez en este ejemplo puedes combinar, esto alinea el texto a la parte inferior derecha.

Si deseamos usar el QLabel para mostrar una imagen debemos crear un QPixmap objeto que representa una imagen que puede ser mostrada en el widget, veamos un ejemplo:

QLabel *lbl = new QLabel(&widget);                                              
lbl->setGeometry(10, 50, 512, 512);                                             
lbl->setPixmap(QPixmap("C:/samples/data/lena.jpg"));

En este código escribimos la ruta completa de la imagen, si lo deseamos podemos indicar una imagen que se encuentre dentro de los archivos de recursos, como lo hicimos con el icono del botón.

QLabel mostrar una imagen

Un QLabel puede ser usado para mostrar una imagen animada en formato GIF para ello cargamos el archivo .gif con la clase QMovie debemos usar el método start() de la misma para iniciar la animación.

QMovie *mov = new QMovie("C:/Developer/TEMP/picachu.gif");
mov->start();                                             
                                                          
QLabel *lbl = new QLabel(&widget);                        
lbl->setGeometry(10, 50, 250, 150);                       
lbl->setMovie(mov);

image

Es todo por ahora hasta la próxima.

Comentarios

  1. buenas noches, quisiera saber como cambiar el tamaño del icono para que abarque toda el area del qpushbutton pues el icono aparece centrado muy pequeño,o si hay forma de que se pudiera cargar el icono con un tamaño especifico y convertirlo en boton.
    gracias de antemano

    ResponderEliminar

Publicar un comentario

Temas relacionados

Entradas populares de este blog

tkinter Grid

tkinter Canvas

Histogramas OpenCV Python

Python Binance API