C++ 我怎样才能找出哪个插槽连接到我的信号?

C++ 我怎样才能找出哪个插槽连接到我的信号?,c++,qt,C++,Qt,使用qt5.11。通过覆盖,如果插槽连接到我的信号,我可以得到通知: void connectNotify(const QMetaMethod &signal) override { if (signal == QMetaMethod::fromSignal(&PromiseBase::resolved()) && isResolved()) { // Here, I want to call the slot im

使用qt5.11。通过覆盖,如果插槽连接到我的信号,我可以得到通知:

    void connectNotify(const QMetaMethod &signal) override {
        if (signal == QMetaMethod::fromSignal(&PromiseBase::resolved()) && isResolved()) {
            // Here, I want to call the slot immediately.
        }
    }
当这种情况发生时,我想立即调用该插槽–并且只调用该插槽,而不是所有可能连接到信号的其他插槽我该怎么做?Qt框架给我信号,但不是插槽

背景:我正在做一个类似于的承诺课程。期望的是,将插槽连接到
已解决的
信号将始终只调用插槽一次,而不管承诺是否已解决或仍处于挂起状态

(我写的是我自己的承诺,而不是使用QFuture,因为没有记录和支持的方法来创建您自己的QFuture对象,QFuture也不支持报告错误。)

您有这个功能

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

返回连接到信号的接收器数量。

如中所述,这不是一项容易的任务。根据您的情况,某种钩子机制可能是足够的。

这不回答问题的注意事项:从连接()调用调用插槽可能是一些QT开发人员不希望他们的时隙方法被调用,而他们仍然处于设置过程中的令人惊讶的行为。您可能希望使用“QTimer::singleShot(0,…)”或类似的命令将调用推迟到Qt事件循环的下一次迭代。
connect
有几个重载,但它们都不是虚拟的,因此无法重写。@Thomas,很抱歉,完全错过了它,要编辑我的答案了