[英]qt emitting a signal across threads by moving the object to
我正在尋找正確的模式以在基於Qt的應用中將其用於異步處理。
這是一個簡化的類,應該接收信號
class Receiver : public QObject {
Q_OBJECT
public:
explicit Receiver(QObject *parent = nullptr) : QObject(parent) { }
public slots:
void onNewMessage(Message message) {
// ...
}
};
創建此類的實例是動態的(實際上也很簡單-用於消息處理的對象數組)。
Receiver* r;
// ...
if (r == nullptr) {
r = new Receiver{};
r->moveToThread(new QThread);
connect(this, &MessageGenerator::messageCompleted, r, &Receiver::onNewMessage);
}
在主要功能中還存在一個注冊:
qRegisterMetaType<Message> ("Message");
問題是為什么從未調用過插槽? 在刪除線程的東西(moveTOThread)的情況下,一切正常,但我更喜歡在不同線程的事件循環中進行處理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.