我学习 Qt 已经有一段时间了,几天前我决定通过QThread
. 我一直在关注这个人。因为他说子类QThread
化不是适当的方式,而是使用QObject
是。我按照他的方法。但他创建了另一个继承自QObject
. 我决定做一些改变:
class myclass
{
private:
dowork();
private slots:
slota();
slotb();
slotc();
}
myclass::dowork()
{
QThread lett;
QThread latt;
QThread pltt;
QObject lethread;
connect(&lett, SIGNAL(started()), this, SLOT(slota()));
lethread.moveToThread(&lett);
QObject lathread;
connect(&latt, SIGNAL(started()), this, SLOT(slotb()));
lathread.moveToThread(&latt);
QObject plthread;
connect(&pltt, SIGNAL(started()), this, SLOT(slotc()));
plthread.moveToThread(&pltt);
lett.start();
latt.start();
pltt.start();/*
lett.wait();
latt.wait();
pltt.wait();*/
while(lett.isRunning())
{
//qDebug() << "Still Running!";
}
lett.quit();
}
如果我运行程序,它会while
无限循环运行!它根本不是从那里出来的。我qdebug
在 3 个插槽的实现内部使用来检查它是否正在进入它们,令人惊讶的是,没有一个插槽被调用。为什么呢?如果我删除评论,.wait
那么程序会暂停。
这种方法有什么问题?我想避免额外的课程,因为我的程序非常小。