Uso del QTimer en QT Creator para crear contador de 0 a 9

En este tutorial de indicaremos el uso del QTimer en QT Creator. Un timer es un tipo de reloj interno que permite ejecutar una acción o función mediante una interrupción en QT. Entonces en este ejemplo, lo usaremos para crear un contador de 0 a 9 con un lcdNumber. Por ejemplo, el programa que se creará esta dividido en dos partes, la configuración del timer y la función que se ejecutará cuando el timer genere la señal de desbordamiento (Timeout).

Para comenzar, vamos a crear un proyecto nuevo en QT. Por ejemplo, llamaremos a este proyecto: QT-Timer. En este proyecto se agregará un «lcdNumber».

QTimer en QT Creator para crear contador de 0 a 9

Paso # 1 – Agregar la biblioteca QTimer.h

Para el primer paso, se agregará la biblioteca #include<QTimer> en el archivo de mainWindow.cpp.

Paso # 2 – Crear y configurar el timer

Para el paso numero 2, se creará el timer, se conectará a una función o slot de la ventana principal (mainWindow) y se comenzará su cuenta. Esta cuenta se desbordara o generará la señal de «timeout» cada que se termine el tiempo configurado. Entonces para estas tres acciones (creación, conexión e inicio), se escribirán las siguientes instrucciones, despues de la instrucción setupUI.

  1. QTimer *cronometro=new QTimer(this);
  2. connect(cronometro, SIGNAL(timeout()), this, SLOT(funcionActivacionTimer()));
  3. cronometro->start(500);

Instrucción # 1. – Crear el QTimer en QT Creator

En este caso, la primera instrucción, creará un «QTimer» que se llama, cronometro (clase y objeto respectivamente), para que este activo y funcionando en la ventana principal.

Instrucción # 2.- Conectar las señales

Para la segunda instrucción, es una conexión de una señal del timer con otra señal de la función de la ventana principal. Este tipo de conexión se uso en el proyecto de crear un reproductor de MP3 con QT-Creator. También recordaremos que una conexión tiene cuatro elementos:

  1. Objeto # 1. En este caso corresponde al cronometro que se quiere conectar.
  2. Señal del objeto # 1. La señal del objeto # 1 que se «escuchará» o la cual generará una interrupción en la computadora.
  3. Objeto # 2. Corresponde al objeto que «escuchará» a la interrupción anterior.
  4. Señal del objeto # 2. Corresponde a la función o slot que se ejecutará cuando ocurra la señal indicada (en este caso el «timeout»).

Por lo tanto, la instrucción # 2, conecta el timeout del cronometro con la función publica llamada funcionActivacionTimer.

Instrucción  # 3.- Iniciar el timer

Para la tercera instrucción se inicia el timer con la función de la clase QTimer que se llama «start». Entonces, entre los paréntesis va el tiempo en el que se generará la señal «timeout» o desbordamiento del timer. Por ejemplo, es importante señalar que este tiempo esta en milisegundos, entonces el valor de: 1000 corresponde a 1 segundo.

Paso # 2 – Crear funciónpublica funcionActivacionTimer

Para el paso numero dos, se creará la función publica que se llama funcionActivacionTimer. Entonces para esto se escribirá la siguiente función en el código mainWindow.cpp después de la declaración de las bibliotecas.

void MainWindow::funcionActivacionTimer(){
//Aqui va el código que activara a la cuenta del display
}

Para el paso # 2, no es suficiente con agregar la función que se conecto en el paso # 1. Por ejemplo, tenemos que también declararla en el archivo mainWindow.h.

Paso # 3 – Agregar la función anterior a mainWindow.h

El archivo de mainWindow.h debería de estar como el siguiente código. Entonces, se agregaran dos cosas, la función slot publica que se llama funcionActivacionTimer y la variable publica contador. Por ejemplo, está variable cambiará de valor en cada activación de la señal timeout del QTimer, que se llama cronometro.

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
int contador = 0;

public slots:
void funcionActivacionTimer();
private:
Ui::MainWindow *ui;
};

 

Paso # 4 – Agregar el código a funcionActivacionTimer

Para el ultimo paso, se agregara a la función que conecta el timeout del QTimer en QT Creator, con la función funcionActivacionTimer.

void MainWindow::funcionActivacionTimer(){
ui->lcdNumber->display(contador);
contador++;
if(contador>9) contador=0;
}

 

Descargar el proyecto completo:

https://hetpro-store.com/TUTORIALES/EjemplosProgramas/QT-Timer.zip 

Autor: Dr. Rubén Estrada Marmolejo.

 

3 Comments

  1. manuel agosto 12, 2018
  2. Daniel Armato abril 6, 2020

Escríbenos tus dudas o comentarios

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.