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.
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.
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.
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.
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);
Es todo por ahora hasta la próxima.
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.
ResponderEliminargracias de antemano