簡體   English   中英

如何找出與我的信號連接的插槽?

[英]How can I find out what slot was connected to my signal?

使用Qt 5.11。 通過重寫QObject::connectNotify ,如果插槽連接到我的信號,我會收到通知:

    void connectNotify(const QMetaMethod &signal) override {
        if (signal == QMetaMethod::fromSignal(&PromiseBase::resolved()) && isResolved()) {
            // Here, I want to call the slot immediately.
        }
    }

當發生這種情況時,我想立即調用插槽 - 只是那個插槽,而不是所有可能連接到信號的其他插槽。 我怎樣才能做到這一點? Qt框架給了我信號,但不是槽。

上下文:我正在開發一個類似於JavaScript承諾的Promise類。 期望將插槽連接到已resolved信號將始終只調用一次插槽,無論承諾是否已解決或仍未決定。

(我正在編寫自己的Promise而不是使用QFuture,因為沒有記錄和支持的方法來創建自己的QFuture對象,QFuture不支持報告錯誤。)

正如在這個答案中所解釋的那樣, 不是一件容易的事。 根據您的情況,某種鈎子機制就足夠了。

你有這個功能

int QObject::receivers ( const char * signal ) const [protected]

返回連接到信號的接收器數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM