Qt4: Nicht aufgelöste Timer-Ereignisse

Eine Mini-Beispieldateimain.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();
}

Extra MiniMakefile:

LDFLAGS = -I/usr/include/qt4 -I/usr/include/qt4/QtCore
LDLIBS = -lQtCore

Kompilieren und Ausführen:

$ make main
g++   -I/usr/include/qt4/QtCore  main.cpp  -lQtCore -o main
$ ./main
timerEvent
1
timerEvent
2
timerEvent
3
timerEvent
q
$

Ok und dann meine Frage. Ich habe dieses Beispiel erstellt, um zu testen, ob Timer-Ereignisse kumulativ sind.

Wenn ich das ausführemain Programm, das nächste tritt ein:

Der ErstetimerEvent Meldung wird nach 3 Sekunden angezeigt, undtimerEvent() wartet auf einen Charakter.Ich drücke1 sofort.3 Sekunden später die SekundetimerEvent Meldung erscheint (wie erwartet).Ich warte einige Sekunden (15 oder mehr) und drücke2Die dritte Meldung wird sofort angezeigt (ein Timer-Ereignis wurde akkumuliert).Ich drücke3 sofort.Und 3 Sekunden später erscheint die vierte Meldung (keine Timer-Ereignisse mehr akkumuliert).Ich drückeq und das Programm endet.

Frage: Warum haben sich keine Timer-Ereignisse mehr angesammelt? Hängt dieses Verhalten von der Plattform ab?

PD: Meine Qt-Version ist 4.8, mein SO Ubuntu 13.04 und mein Kernel (Linux) 3.8.0-19-generic. Das laufende Grafiksystem ist Gnome 3.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage