![]() | Eliminación del parpadeo utilizando un temporizador |
Prev | Next |
Los objetos QTimer se utilizan cuando se desea hacer algo en un momento determinado, o cada x milisegundos. Para hacerlo, puede iniciar un temporizador que emita una señal en un momento concreto. Después conecta esa señal a un slot para que realice el trabajo necesario.
En primer lugar, añadimos una variable protegida QTimer m_timer a CentralView (no olvide la línea de inclusión #include <qtimer.h> correspondiente). En el constructor de CentralView, conectamos la señal timeout() que emite m_timer al slot updatePixmap() que hemos creado en s3. Para hacerlo, utilizaremos connect(&m_timer, SIGNAL(timeout()), this, SLOT(updatePixmap()));.
Ahora cambiamos los tres slots, setRed, setGreen y setBlue para que inicien el temporizador en vez de que llamen directamente a updatePixmap. m_timer.start(200,true); inicia un temporizador de un único ciclo (que únicamente emitirá una señal y se detendrá) con un tiempo de espera de 200 ms. Cada vez que iniciemos un temporizador mientras haya otro funcionando (iniciamos el segundo temporizador antes de que hayan pasado los 200 ms), se detendrá el más antiguo. Eso significa que si el usuario mueve el deslizador muy rápido, en vez de producirse muchas llamadas a updatePixmap(), esperaremos a que el usuario deje de modificar los valores durante 200 ms antes de hacer el cambio real.
Eso nos lleva a s4. Ahora que hemos corregido el parpadeo (al menos en gran parte, ya que su corrección completa no entra dentro del objetivo de este tutorial), podemos buscar experiencias más avanzadas.
Prev | Home | Next |
Cómo hacer que el widget generado por el diseñador funcione | Up | Carga y manipulación de un mapa de pixels |