我正在使用Qt编写GUI应用程序。创建qt线程事件循环
一个主线程负责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()));
}
}
现在我有几个问题:
我工人阶级定时器不起作用。也许这是因为new thread has no event loop,但我不知道如何创建这样一个。我试图
connect(workerthread, SIGNAL(started()), workerthread, SLOT(exec()));
,但它也不起作用。
当我尝试等待新的线程,信号不会发送
class GUI { void exit() { thread->wait(); } }
我想这也就是因为没有事件循环,并因为没有信号发出。
有没有人有一个想法如何解决这些问题?
你忘了在你的线程中调用[开始](http://qt-project.org/doc/qt-4.8/qthread.html#start)吗?这不在你的代码示例中。 – cgmb