繁体   English   中英

Qt线程不起作用

[英]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()”无效。 谁能解释我为什么? 谢谢阿莱西亚

您有几个问题:

  • QThreaddaqSlave实例超出范围。 使用new并为线程指定一个父对象。 moveToThread()自动将daqSlv重新绑定到该线程,因此无需担心。
  • 在将工作人员移至线程之前,将调用doSetup()函数。 在对QObject::connect()调用中指定Qt::QueuedConnection可以解决此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM