确定插槽是否连接到给定信号
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);
}
我很想知道是否有某种方法可以确定是否存在与我在 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);
}