如何知道连接到特定qobject&信号的插槽?

时间:2013-09-03 13:18:31

标签: qt signals-slots

给定从qobject和特定信号派生的对象,是否有可能动态地知道连接到该信号的插槽?

2 个答案:

答案 0 :(得分:0)

您应该查看QMetaObject::indexOfSignalQMetaObject::indexOfSlotQMetaObject::indexOfMethod

QMetaObject* Meta = MyObject->metaObject();
int i = Meta->indexOfSlot("mySlot()");
if (i != -1) {
    // Has connection to slot
}

使用QObject::receivers,您将返回连接到信号的接收器数量。

if (MyObject->receivers(SIGNAL(mSignal()))) {
}

答案 1 :(得分:0)

在插槽中,您可以使用QObject :: sender()方法获取发出信号的对象。但我强烈建议您修改您的设计,这样您就不需要了解发件人了。