我有两个来自不同类的对象:“master”和“slave”。 我试图在master.cpp中创建一个线程,我已经声明了从属对象。 问题是线程没有启动
QThreadEx daqThread;
daqSlave daqslv;
daqslv.doSetup(daqThread);
daqslv.moveToThread(&daqThread);
daqThread.start(QThread::NormalPriority);
其中:doSetup()是:
void daqSlave::doSetup(QThreadEx &cThread) const
{
qDebug()<<"daqSlave::doSetup()-begin";
QObject::connect(&cThread, SIGNAL(started()),
this, SLOT(avvio()));
qDebug()<<"daqSlave::doSetup()-end";
}
“doSetup()”有效但“avvio()”却没有。 谁能解释我为什么? 谢谢, 阿莱西娅
答案 0 :(得分:0)
您有几个问题:
QThread
和daqSlave
个实例超出了范围。使用new
并为线程提供父对象。 moveToThread()
自动将daqSlv重新托管给线程,因此这不是问题。doSetup()
函数。指定Qt::QueuedConnection
在致电QObject::connect()
以解决此问题。