来自线程的Qt信号会导致错误

时间:2014-04-05 20:58:42

标签: c++ qt qt4 qthread qt-signals

我有一个线程,我需要将带有参数的信号发送到指针,如下所示:

connect(insThread, SIGNAL(sgGetCurrentElement(QWebElement&)), this, SIGNAL(sgGetCurrentElement(QWebElement&)));

其中insThread是thred。但是我收到了错误:

QObject::connect: Cannot queue arguments of type ‘QWebElement&’ (Make sure ‘QWebElement&’ is registered using qRegisterMetaType().)

我已经知道我需要使用qRegisterMetaType,但我无法弄清楚如何构建它。我试过了

qRegisterMetaType<QWebElement&>("myElement");

但失败了。我该如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:1)

我假设您正在尝试使用引用(&amp;)注册QWebElement,因为已将插槽原型化以将QWebElement作为参考,但如果您将信号从一个线程发布到,则这不是一个好主意另一个,见here。无论如何,正如Laszlo指出的那样,你必须注册基类型,用参考标记(&amp;)注册类型是没有意义的。

答案 1 :(得分:0)

我不确定您为什么要尝试将其注册到&,但如果没有这样做,请执行以下操作:

qRegisterMetaType<QWebElement>("myElement");