使用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 promises的Promise类。期望将插槽连接到resolved
信号将始终只调用一次插槽,而不管承诺是否已解决或仍在等待中。
(我正在写自己的Promise而不是使用QFuture,因为没有记录和受支持的方式来创建自己的QFuture对象,并且QFuture不支持报告错误。)
答案 0 :(得分:0)
如this answer中所述,这并非易事。根据您的情况,某种挂钩机制可能就足够了。
答案 1 :(得分:-1)
您具有功能
int QObject::receivers ( const char * signal ) const [protected]
返回连接到信号的接收器数量。