The QTimer object must be created in InfoThread::run() without a parent (preferably on the stack since QThread::exec() blocks) and the connection must be forced as direct
Qt Code:
  1. connect( &timer, SIGNAL( timeout() ), this, SLOT( update() ), Qt::DirectConnection );
To copy to clipboard, switch view to plain text mode 
because QThread itself lives in different thread than what's being executed in QThread::run().