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:

el primerotimerEvent 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.2El 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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta