![](/img/trans.png)
[英]singleHow does Qt::QueuedConnection work in a single thread application?
[英]Qt thread does not work
我有两个来自不同类别的对象:“主”和“从”。 我试图在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()”无效。 谁能解释我为什么? 谢谢阿莱西亚
您有几个问题:
QThread
和daqSlave
实例超出范围。 使用new
并为线程指定一个父对象。 moveToThread()
自动将daqSlv重新绑定到该线程,因此无需担心。 doSetup()
函数。 在对QObject::connect()
调用中指定Qt::QueuedConnection
可以解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.