ваша функция run () блокирует поток. Он вызывается в контексте потока, но никогда не возвращается. Это означает, что событие l oop в потоке больше не выполняется, как только вызывается ваша функция run ().
Для событий таймера, вызывающих ваши лямбды, событие l oop должен быть обработан. Если бы вы изменили свою функцию запуска следующим образом:
void run() {
timer = new QTimer(this);
connect(timer, &QTimer::timeout, []{qDebug() << "computed";});
timer->start(1000);
// don't loop here, instead exit the function
// and let the thread return back to the event loop
}
, тогда должны быть вызваны ваши лямбды. Поток также будет продолжать работать до тех пор, пока вы не вызовете thread.quit()
Примечание: вы также можете напрямую подключиться к сигналу '' '' запущен '' 'потока:
connect(&thread, &QThread::started, worker, &Worker::run);
thread.start();