我正在尝试编写一个带有两个参数的方法:Q_PROPERTY
名称(char *
)和QObject *
关联的,允许将 的 notifySignal(如果存在)连接Q_PROPERTY
到 avoid slot(QVariant)
或动态构建的将调用 a 的插槽void method(QVariant)
。信号的签名可以根据参数的类型而变化。
我怎样才能在 Qt 5 中实现这一点?也许这是不可能的,但当我不确定时,我不会停止搜索。
所以我想我有3个解决方案:
从信号名称动态构建信号确切签名的插槽,并使用旧的 Qt 连接方式在其中调用方法(QVariant):
connect(sender, SIGNAL (valueChanged(QString,QString)), receiver, SLOT (updateValue(QString)) );
使用新的 Qt 5 连接系统:
connect(sender, &Sender::valueChanged,receiver, &Receiver::updateValue );
构建可与 QVariant 一起使用的所有插槽签名。
Althougt,我不知道如何动态构建一个为第一个解决方案调用指定方法的插槽;对于第二种解决方案,我不知道如何从QMetaMethod
notifySignal 中检索函数指针;也许最后一个解决方案是最好的方法,并且很容易实现,但它有点极端。
你怎么看待这件事?