У меня есть поток с QTimer, мне нравится, что он может динамически изменять интервал выполнения без перезапуска приложения: это код внутри метода выполнения QThread:
void myThread::run()
{
QTimer timer1;
connect(&timer1, SIGNAL(timeout()),
this,SLOT(fire(),Qt::DirectConnection));
qDebug() << "A::run() worker thread -- currentThread:" << currentThread();
timer1.start(1000);
QThread::exec();;
}