【发布时间】:2020-09-08 13:19:08
【问题描述】:
我想包装 Qt 连接方法(Qt5 语法),但无法编译我的代码。我能想到的最简单的例子是(未经测试,只是一般的想法):
// Called like this
doConnect(&obj1,&obj1:sig,&obj2,&obj2::slot);
// Implemented here
void namespace::doConnect(
const QObject* senderObject,
const QMetaMethod& senderSignal, {
const QObject* receiverObject,
const QMetaMethod& receiverSlot) {
connect(senderObject, senderSignal, receiverObject, receiverSlot);
}
当我尝试编译它时,我在调用 doConnect 的行上收到错误,
"没有匹配的函数调用 doConnect"
在连接线上
错误:静态断言失败:信号和槽参数不是 兼容的。
这听起来像信号和插槽有不同/不兼容的参数。但是,如果我通过将发送方对象/信号和接收方对象/插槽放在连接命令中直接调用连接,则它可以正常工作。所以这不是信号/插槽问题的特征。
这里有什么问题?将参数传递给函数是否首先隐藏了连接函数(或宏或模板)需要的一些信息?
【问题讨论】:
-
很高兴看到实际调用和函数的确切签名作为信号和槽传递。
标签: c++ qt5 signals-slots qobject