Vamos a ver como crear hilos en C\C++ usando QT, y como practica vamos a hacer un cronometro, este ejemplo se ha realizado usando:
Ubuntu 10.04
QDevelop
QTDesigner 4
Lo primero que vamos a hacer es crearnos un nuevo proyecto usando QDevelop, el cual llamaremos hilosQT, luego vamos a fuentes -> clic derecho -> agregar, y vamos a crear una clase para el hilo, la llamaremos hilo.cpp y vemos que también nos crea la cabecera hilo.h
Ahora para editar nuestra interfaz gráfica nos vamos a apoyar en QTDesginer, hacemos doble clic en el archivo: ui/mainwindow.ui y se nos va a abrir QTDesigner, he añadido un botón de inicio, y un widget tipo "lcd display", al final me quedo así:
Ahora regresamos a QDevelop para programar el hilo y los eventos. Editamos el archivo hilo.cpp de manera que se nos cree un ciclo infinito con una pausa de 1 segundo para simular el reloj,
void hilo::run(){
while(1){
if(s==59)
{
s=0;
m++;
}
if(m==59)
{
m=0;
h++;
}
s++;
ventana->lcdNumber->setProperty("intValue", s);
msleep(1000);
}
Editamos la cabecera, como vemos en el constructor le pasamos nuestra "gui" para poder actualizar el display.
class hilo : public QThread
{
public:
void run();
hilo(MainWindowImpl *gui);
MainWindowImpl *ventana;
int h, m ,s;
};
Para agregar el evento del boton, vamos a crear un metodo que se llame "iniciarCronometro()" y lo definimos en la cabecera de nuestra ventana principal, en el archivo fuente le ponemos el evento al boton y definimos las acciones del metodo:
hilo *crono;
MainWindowImpl::MainWindowImpl( QWidget * parent, Qt::WFlags f)
: QMainWindow(parent, f)
{
setupUi(this);
connect(pushButtonIniciar, SIGNAL(clicked()), this, SLOT(iniciarCronometro()));
}
void MainWindowImpl::iniciarCronometro()
{
crono = new hilo(this);
crono->start();
}
Ahora lo interesante, vamos a probarlo!!.. si todo va bien nos debería quedar así, si queréis el código fuente puedo compartirlo!..


