У меня есть класс ParentThread , полученный из qthread со следующим методом run () , который примерно выглядит следующим образом:
Код: Выделить всё
void ParentThread::run()
{
QThread *childThread = new QThread;
QObject::connect(childThread, SIGNAL(finished()), this, SLOT(onChildThreadFinished());
QObject::connect(childThread, SIGNAL(finished()), childThread, SLOT(deleteLater());
childThread->start();
exec();
}
Slot onChildThreadFineDishing () определяется на ParentThread и должен работать в контексте ParentThread . Тем не менее, используя приведенный выше код, onChildThreadFined вызывается только в случае, если соединение Signal/Slot является QT :: DirectConnection , но затем работает в контексте детского потока. В случае, если соединение сигнала/слот определяется как QT :: queuedConnection , слот никогда не вызывается. Я использую QT 4.8.5. Есть идеи, в чем проблема?
Подробнее здесь:
https://stackoverflow.com/questions/258 ... ild-thread