gpt4 book ai didi

c++ - 将一个对象的所有QT信号动态映射到一个插槽

转载 作者:行者123 更新时间:2023-11-30 02:39:24 25 4
gpt4 key购买 nike

我想将一个 QObject 的所有信号连接到某个插槽。

插槽看起来像这样:

void SignalIntercepter::signalFired()
{
std::cout << "Signal is fired!" << std::endl;
}

以下代码是 QObject 将被传递到的地方:

void SignalIntercepter::handleObject(QObject* object)
{
const QMetaObject *me = object->metaObject();
int methodCount = me->methodCount();
for(int i = 0; i < methodCount; i++)
{
QMetaMethod method = me->method(i);
if(method.methodType() == QMetaMethod::Signal)
{
// How do I connect this signal to the slot?
// QObject::connect(object, ..., ..., ...);
}
}
}

最佳答案

看看

const char * QMetaMethod::signature() const

那么你应该可以像这样使用它

QObject::connect(object, method->signature(), this, SLOT(signalFired()));

您可能需要在 method->signature() 调用之前添加 "2" 因为 SIGNAL(a) makro 已定义 SIGNAL(a) "2"#a 如前所述Is it possible to see definition of Q_SIGNALS, Q_SLOT, SLOT(), SIGNAL() macros? (Qt)

关于c++ - 将一个对象的所有QT信号动态映射到一个插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com