给定从qobject和特定信号派生的对象,是否有可能动态地知道连接到该信号的插槽?
答案 0 :(得分:0)
您应该查看QMetaObject::indexOfSignal
,QMetaObject::indexOfSlot
和QMetaObject::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()方法获取发出信号的对象。但我强烈建议您修改您的设计,这样您就不需要了解发件人了。