Я хочу, чтобы моя программа ждала истечения времени ожидания QTimer для выполнения определенного метода. Функция выполняет некоторые вычисления в цикле, и после завершения этого цикла она должна дождаться истечения времени ожидания таймера и запуститься снова после завершения события таймера.
Вот текущее состояние кода, который генерирует поток и подключает таймер к методу generateData(). Этот код выполняется в конструкторе класса.
timer = new QTimer(0);
timer->setTimerType(Qt::PreciseTimer);
timer->setInterval(40); //25 frames per second
QThread *thread = new QThread(this);
moveToThread(thread);
timer->moveToThread(thread);
connect(thread, SIGNAL(started()), timer, SLOT(start()));
connect(timer, SIGNAL(timeout()), this, SLOT(timerEvent()));
connect(thread, SIGNAL(started()), this, SLOT(generateData()));
connect(this, SIGNAL(finished()), thread, SLOT(quit()));
thread->start();
метод, который должен ждать таймер после выполнения цикла for
void Class::generateData() {
while (1) {
calculation()
//do some calculation, which takes around 3-5ms
QEventLoop loop;
connect(timer, SIGNAL(timeout()), &loop, SLOT(quit()));
loop.exec();
}
}
Кажется, цикл событий не мешает выполнению метода в это время. Есть ли другой способ сделать это?
object1
иobject1->at(i)->test();
? - person eyllanesc   schedule 28.06.2018