Qt线程不工作

Qt thread does not work

本文关键字:工作 线程 Qt      更新时间:2023-10-16

我有两个来自不同类的对象:"master"answers"slave"。我试图在master.cpp中创建一个线程,在那里我已经声明了slave对象。问题是线程没有启动

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()"不。有人能告诉我为什么吗?谢谢你!Alessia

你有几个问题:

  • QThreaddaqSlave实例将超出作用域。使用new并给线程一个父对象。moveToThread()自动重父daqSlv到线程,所以这不是一个问题。
  • doSetup()函数在你把worker移到线程之前被调用。在呼叫QObject::connect()时指定Qt::QueuedConnection来解决这个问题。