Qt4: Неразрешенные события таймера
Мини образец файлаmain.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();
}
Экстра миниMakefile
:
LDFLAGS = -I/usr/include/qt4 -I/usr/include/qt4/QtCore
LDLIBS = -lQtCore
Комплирование и исполнение:.?
$ make main
g++ -I/usr/include/qt4/QtCore main.cpp -lQtCore -o main
$ ./main
timerEvent
1
timerEvent
2
timerEvent
3
timerEvent
q
$
Хорошо, а затем мой вопрос. Я сделал этот пример с целью проверки, являются ли события таймера накопительными.
Когда я выполняюmain
По программе происходит следующее:
timerEvent
сообщение показывается через 3 секунды, иtimerEvent()
ждет персонажа.я нажимаю1
inmediatly.Через 3 секунды второйtimerEvent
сообщение появляется (как и ожидалось).Я жду несколько секунд (15 или больше) и нажимаю2
Третье сообщение отображается сразу (накоплено одно событие таймера).я нажимаю3
немедленно.И через 3 секунды появляется четвертое сообщение (больше событий таймера не накапливается).я нажимаюq
и программа заканчивается.Вопрос: Почему нет больше накопленных событий таймера? Зависит ли это поведение от платформы?
PD: Моя версия Qt 4.8, моя SO Ubuntu 13.04 и мое ядро (linux) 3.8.0-19-generic. Работающая графическая система - Gnome 3.