确定插槽是否连接到给定信号

时间:2015-01-12 18:11:52

标签: c++ qt signals

我有兴趣知道是否有某种方法可以确定与我在课堂上定义的给定信号有关联。它基本上是一个处理数据的信号,我不在乎它所连接的内容,但是我想要包含一个我不发送数据的健全性检查进入永远不会被看见的空虚。我已经查看了Determine signals connected to a given slot in Qt,但这是一个相反的问题。

1 个答案:

答案 0 :(得分:8)

确切地说有QObject::isSignalConnected()用例 - 避免在没有人收听时准备信号发射的不必要的工作。其API docs甚至还有一个很好的例子。

示例:

static const QMetaMethod valueChangedSignal = QMetaMethod::fromSignal(&MyObject::valueChanged);
if (isSignalConnected(valueChangedSignal)) {
    QByteArray data;
    data = get_the_value();       // expensive operation
    emit valueChanged(data);
}