domingo, 31 de agosto de 2014

Primeros pasos en Qt

Vamos a empezar con un programa de Qt muy simple. Primero estudiaremos línea por línea.

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
return app.exec();
}

En la linea 1 y 2 incluimos las clases QAplication y Qlabel. En QT todas las clases comienzan con la letra Q en mayúscula.   En la linea 5 creamos la aplicación qt y le pasamos como parámetro, los parámetros de main dado que la aplicación se puede ejecutar desde la linea de comandos con algún parámetro.

En la linea 6 se crea el widget QLabel el cual muestra “Hello Qt!”, los widget en la terminología Qt y unix son elementos visuales. Un botón, menú, scroll son ejemplos de widget. Además un widget puede contener a otro widget.

En la linea 7 se hace visible el componente, dado que todos los componentes nacen invisibles.

Línea 8 pasa el control de la aplicación a Qt. En este punto, el programa entra en el bucle de eventos. Esta es una especie de modo de espera, donde el programa espera de las acciones del usuario tales como clics del ratón y las pulsaciones de teclas. Las acciones del usuario generan eventos (también llamados "mensajes") a los que el programa puede responder, por lo general se ejecutan una o más funciones.

Si ejecutamos la aplicación, se vera un label con la fase “Hello Qt!". Podemos escribir HTML en el label para eso vamos a cambiar la linea 6 por:

QLabel *label = new QLabel("<h2><i>Hello</i><font color=red>Qt!</font></h2>");

El label tomara el estilo igual que html.

Vamos a agregar un botón para salir de la aplicación:

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton *button = new QPushButton("Quit");
QObject::connect(button, SIGNAL(clicked()),
&app, SLOT(quit()));
button->show();
return app.exec();
}

En este ejemplo agregamos un botón el cual emite la señal clicked cuando el usuario hace click en el componente.

Los widgets de Qt emiten señales para indicar que se ha producido una acción del usuario o de un cambio de estado. Por ejemplo, QPushButton emite una señal clicked() cuando el usuario hace clic en el botón. Una señal se puede conectar a una función (utilizando la función SLOT), de modo que cuando se emite la señal, la función se ejecuta automáticamente.