Qt4: eventos de temporizador sin resolver
Un mini archivo de muestramain.cpp
:
#include <iostream>
#include <QCoreApplication>
class MyApp : public QCoreApplication
{
private:
int m_idtimer;
public:
MyApp(int nargs, char* argc[]) : QCoreApplication(nargs, argc)
{
m_idtimer = startTimer(3000); // 3 segs.
}
protected:
void timerEvent(QTimerEvent* e)
{
char c = '\0';
std::cout << "timerEvent" << std::endl;
std::cin >> c;
if (c == 'q') {
killTimer(m_idtimer);
quit();
}
}
};
int main(int nargs, char* argc[])
{
MyApp app(nargs, argc);
return app.exec();
}
Mini extraMakefile
:
LDFLAGS = -I/usr/include/qt4 -I/usr/include/qt4/QtCore
LDLIBS = -lQtCore
Compilación y ejecución:
$ make main
g++ -I/usr/include/qt4/QtCore main.cpp -lQtCore -o main
$ ./main
timerEvent
1
timerEvent
2
timerEvent
3
timerEvent
q
$
Ok y luego, mi pregunta. He hecho esta muestra con el propósito de probar si los eventos del temporizador son acumulativos.
Cuando ejecuto elmain
programa, lo siguiente ocurre:
timerEvent
el mensaje se muestra después de 3 segundos, ytimerEvent()
espera un personaje.Yo presiono1
de inmediato3 segundos después, el segundo.timerEvent
Aparece el mensaje (como se esperaba).Espero unos segundos (15 o más) y presiono.2
El tercer mensaje se muestra inmediatamente (un evento de temporizador acumulado).Yo presiono3
inmediatamenteY 3 segundos después aparece el cuarto mensaje (no se acumulan más eventos del temporizador).Yo presionoq
y el programa termina.Pregunta: ¿Por qué no hay más eventos de temporizador acumulados? ¿Depende este comportamiento de la plataforma?
PD: Mi versión Qt es 4.8, mi SO Ubuntu 13.04 y mi kernel (linux) 3.8.0-19-genérico. El sistema gráfico en ejecución es Gnome 3.