QTimer останавливается и запускается сам - PullRequest
0 голосов
/ 22 марта 2011

Вот как я использую QTimer:

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->setInterval(1000);
timer->start();

Программа контролирует функцию update () и печатает в ней текущее время.Обычно он работает, как и ожидалось, печатает время каждую секунду, но когда программа начинает обрабатывать другие задания, возможны некоторые перерывы, например от 5 до 8 секунд.

Документация Qt упоминает о точностивопросы, как 1 мс, очевидно, у меня есть другая проблема.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

QTimer (и все доставки сообщений на основе событий) не управляются прерываниями.Это означает, что вам не гарантировано, что вы получите событие сразу после его отправки.Точность описывает, как событие инициируется, а не как оно доставляется.

Если вы не выполняете многопоточный процесс на длинной работе, периодически вызывайте QCoreApplication::processEvents() в течение длительного процесса, чтобы обеспечить ваш слотвызывается.

0 голосов
/ 22 марта 2011

Ваши другие задания выполняются в течение нескольких секунд, и во время этих событий обработка не выполняется.Чтобы получить необходимую скорость отклика, вам понадобится выполнить задания.

...