Для постоянного цикла вам лучше реализовать слот, который будет постоянно вызываться в конце самого себя:
test.h:
private slots:
void workMethod();
test.cpp:
void Class:workMethod()
{
....
QMetaObject::invokeMethod(this, "workMethod", Qt::QueuedConnection);
}
Тогда ваш метод будет выполнять каждую итерацию под управлением очереди сообщений и в любой момент вы можете остановить поток.