Cronometro en QT usando hilos

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



34 comentarios:

  Keylin

29 de octubre de 2010, 19:28

Hola! me parece un muy buen aporte!! je je me podrías enviar el código fuente?? mi correo es keyhidalgob@hotmail.es

Gracias ;-)

  Ces

30 de octubre de 2010, 9:43

enviado!

saludos

  Keylin

30 de octubre de 2010, 11:03

Gracias amigo, de verdad que con personas como vos se hace más fácil nuestro trabajo! ;) seguí así.. ha sido de mucha utilidad para mí

Je je muchísimas gracias

  Anónimo

12 de febrero de 2011, 16:00

Hola,
muy interesante, podrías mandarme el codigo fuente ejdoliva@yahoo.es. Muchas gracias

  Ces

16 de febrero de 2011, 21:10

perdon por la tardanza.. ya te lo envie (Y)

  Anónimo

25 de febrero de 2011, 5:25

Hola! Me interesaria mucho el código. Mi mail es teresaguiteras@gmail.com

Muchas gracias!

  Ces

25 de febrero de 2011, 9:42

listo, ya te lo envie,

saludos

  Darick

22 de marzo de 2011, 16:49

Gracias por tan interesante información, la verdad es que también me interesa el código, podrías enviármelo (daricktq@hotmail.com) o publicarlo.

Gracias

  Ces

22 de marzo de 2011, 22:16

enviado!


saludos

  Unknown

1 de mayo de 2011, 14:13

Hola excelente aporte me podrías facilitar el código ???

josed43@gmail.com


Gracias por tu aporte excelente trabajo desde hace tiempo quería hacer esto.

  Ces

3 de mayo de 2011, 21:16

perdon por la demora, ya te lo envie,

saludos

  Anónimo

4 de mayo de 2011, 8:55

Hola!
Me serviría de gran ayuda el código, ando un poco perdido...
Mi correo es auca@alumni.uv.es
Gracias

  Ces

4 de mayo de 2011, 9:07

ya te lo envie, saludos

  Piero

26 de mayo de 2011, 6:36

podrias enviarme el codigo fuente? piero89@gmail.com gracias de antemano

  Ces

26 de mayo de 2011, 18:54

listo!..

  Juan Felipe

2 de junio de 2011, 8:53

huy excelente aporte, tengo una pregunta, como se plantea la velocidad del conteo, o esta es por defecto?.... si me puedes facilitar el codigo, te lo agradezco...... pipeospina90@hotmail.com

  Ces

7 de junio de 2011, 9:14

enviado, saludos

  Anónimo

17 de julio de 2011, 21:35

excelente aporte podrias enviarme el codigo? alexisj.gutierrezf@gmail.com

  Anónimo

5 de octubre de 2011, 5:05

Hola. Estoy trabajando con hilos en Qt y me vendría bien el código para ver como lo has hecho. Me lo podrias enviar a nomwise@hotmail.com

Gracias y buen aporte!!!

  Ces

5 de octubre de 2011, 8:01

ya te lo envie,

Saludos!

  9goles

12 de octubre de 2011, 8:51

me puedes enviar el código a j9juliof@gmail.com ? Quiero entender bien lo de los hilos. Gracias.

  baron376

29 de octubre de 2011, 13:23

Hey! me gustaria tener el codigo para hacer mis pruebas academicas... Me lo envias por favor?

baron376@gmail.com

  Ces

29 de octubre de 2011, 15:39

listo

  Allan

3 de noviembre de 2011, 14:45

Amigo mi correo es alchro_03@hotmail.com, podrias enviarme el codigo fuente? muchas gracias

  Johan Campos

7 de noviembre de 2011, 12:49

Hola puedes enviarme el codigo a josephcampos91@gmail.com
gracias de ante mano muy buen ejemplo

  Howard

13 de diciembre de 2011, 12:00

Hola Ces . una pregunta yo ya tengo mi programa creado un juego llamado frogger . i pregunta es como poner un cronometro en el . no puedo usar la opcion desing. gracias

  Anónimo

16 de junio de 2012, 17:24

Buenas! muy bueno este aporte. estoy tratando de hacerlo pero me dan algunos errores (de mi propio codigo) sera que me podrias enviarlo a mi correo y comparo a ver que puede estar saliendo mal? jesus.ricupero@gmail.com

  ChangOscuro

4 de julio de 2012, 14:45

tubarbarito@gmail hermano excelente aporte sera que me mandas el codigo te lo agradeceria enormemente Dios te bendiga...

  Anónimo

16 de agosto de 2012, 14:06

hola.. me parecio muy interesante..
y estoy aprendiendo QT ahora, y me preguntaba si me puedes enviar el codigo fuente a mi correo
paname_55@hotmail.com
gracias.. :)

  Eder

15 de noviembre de 2012, 17:08

Hola! es un gran aporte, me podrías enviar el código fuente?? mi correo es tigger_eder@hotmail.com

Gracias

  Anónimo

21 de agosto de 2013, 12:27

hola excelente trabajo puedes enviar el codigo ami correo, es:

francisco.marquez@upaep.edu.mx


gracias

  Anónimo

6 de enero de 2015, 16:31

Gracias por tu ayuda.
Podrias ayudarme enviandome el codigo; mi direccion : dhmartillo@hotmail.com
Saludos.

  Unknown

8 de noviembre de 2015, 18:25

excelente aportacion solo un gran gran favor si me puedes proporcionar tu codigo mi correo es ebedel.hm@gmail.com

  Unknown

15 de abril de 2018, 10:06

podrian eviar el codigo si aun lo tienes amigo, porfa
mi correo es
whiskas6451@gmail.com