c++ - QObject::connect: 无法对类型为 'int&' 的参数进行排队

标签 c++ qt qthread

我试着这样做:

connect(this, SIGNAL(signalClicked(int&)),  classA, SLOT(doWork(int&)));

但我从标题中得到了信息。 所以我浏览了互联网并想出了这个也不起作用的解决方案:

 qRegisterMetaType<int&>("Type");
 connect(this, SIGNAL(signalClicked(Type)),  classA, SLOT(doWork(Type)));

Error: no matching function for call to ‘qRegisterMetaType(const char[5])’

有什么解决办法吗?

最佳答案

如果 Qt 正在尝试对参数进行排队,这意味着连接是在线程之间进行的。这不适用于非常量引用。

您可以使用 reference_wrapper 来解决这个问题,但我强烈建议您重新考虑您的设计。在信号/槽连接中通过引用传递值不是一个好主意。

关于c++ - QObject::connect: 无法对类型为 'int&' 的参数进行排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17083379/

相关文章:

c++ - 指针比较 “>” 与数组对象第一个元素之前的指针

c++ - 快速调用显示/隐藏时,QT QDialog 无法正确隐藏

c++ - 为什么我不能从自身内部调用类的启动函数?

python - 无法终止 PyQT QThread

c++ - 读取二进制文件的问题(ascii 和二进制的混合)

c++ - 在 C++ 中读取二进制文件的最后一位

c++ - 多生产者/消费者绩效

android - Qt/QML Android 3rd 方虚拟键盘不适用于 TextInput

Qt 用户界面 : speed up big table

c++ - 正确构建项目 C++/QT 的问题