繁体   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