Mostrando entradas con la etiqueta c. Mostrar todas las entradas
Mostrando entradas con la etiqueta c. Mostrar todas las entradas

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



Linux - C compiler cannot cannot create executables

Cuando estaba instalando el servidor apache en linux, me tiro el muy popular.. error.. que tanto nos ha quitado el sueno:

"c compiler cannot create executables", la solucion es simple, instalar los siguientes paquetes para:

Ubuntu:
sudo apt-get install build-essential

Fedora:
yum groupinstall 'Development Tools'