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

Determine if a slot is connected to a given signal

我很想知道是否有某种方法可以确定是否存在与我在 class 中定义的给定信号的连接。它基本上是一个处理数据的信号,我不在乎它连接到什么,但我想包括一个完整性检查,以确保我不会将数据发送到永远不会被看到的空隙中。我检查过 Determine signals connected to a given slot in Qt,但这是一个相反的问题。

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);
}