QObject::connect: Incompatible sender/receiver arguments
Bar::bar(signed short*) --> Foo::foo(short int*)
Run Code Online (Sandbox Code Playgroud)
有没有办法让QT在这种事情上更聪明,还是我应该使用编码标准来避免这种奇怪的?
编辑:上面的错误消息是来自失败的connect()调用的运行时错误消息.
有两种语法可以建立信号和插槽连接:
旧:
connect(sender, SIGNAL(valueChanged(int)), receiver, SLOT(updateValue(int)));
Run Code Online (Sandbox Code Playgroud)
新:
connect(sender, &Sender::valueChanged, receiver, &Receiver::updateValue);
Run Code Online (Sandbox Code Playgroud)
旧语法使用SIGNAL和SLOT宏.说到这种语法,Qt的元编译器很笨 - 它依赖于字符串解析.如果字符串不匹配,则不连接.在我的系统(有32位int)上,我无法连接someFunc(int)到a anotherFunc(int32_t).更糟糕的是,如果没有使用和注册类型,我无法连接someFunc(int32_t)到.有趣!anotherFunc(int32_t)Q_DECLARE_METATYPEqRegisterMetaType<T>()
您可能应该始终使用新语法.它使用成员函数指针并从编译时检查中获益
优点:
我相信新语法应该可以解决您的问题.
请参阅新信号槽语法
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |