我正在使用 Qt 来编写 GUI 应用程序。
主线程负责 GUI 并创建 QThread 以便对对象进行一些工作。
class Worker
{
void start() {
QTimer* timer = new Timer();
connect(timer,SIGNAL(timeout()),this,SLOT(do()));
}
void do() {
//do some stuff
emit finished();
}
}
class GUI
{
//do some GUI work then call startWorker();
void startWorker() {
QThread* thread = new Thread();
Worker* worker = new Worker();
worker->moveToThread(thread);
connect(thread, SIGNAL(started()), worker, SLOT(start()));
connect(worker, SIGNAL(finished()), workerthread, SLOT(quit()));
connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));
}
}
现在我有几个问题:
我工人班的计时器不工作。也许是因为新线程没有事件循环,但我不知道如何创建这样一个。我试过了
connect(workerthread, SIGNAL(started()), workerthread, SLOT(exec()));
但它也不起作用。
当我尝试等待新线程时,信号永远不会发送
class GUI { void exit() { thread->wait(); } }
我认为这也是因为没有事件循环,因此没有发出信号。
有人知道如何解决这些问题吗?