QObject :: connect:不能对'int&'类型的参数进行排队

问题描述 投票:10回答:1

我试着这样做:

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

但我在标题中得到了消息。所以我已经探索了互联网,我想出了这个解决方案,它也没有工作:

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

错误:没有匹配函数来调用'qRegisterMetaType(const char [5])'

有解决方案吗

c++ qt qthread
1个回答
20
投票

如果Qt试图对参数进行排队,则意味着连接在线程之间。这不适用于非const引用。

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

© www.soinside.com 2019 - 2024. All rights reserved.