QObject :: connect:无法对“int&”类型的参数进行排队

时间:2013-06-13 09:15:39

标签: c++ qt qthread

我试着这样做:

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])'

任何解决方案?

1 个答案:

答案 0 :(得分:18)

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

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