c++ - 来自线程的 Qt 信号导致错误

标签 c++ qt qt4 qthread qt-signals

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

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

其中 insThread 是线程。但是我得到了错误:

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

我已经知道我需要使用 qRegisterMetaType 但我不知道如何构造它。我试过了

qRegisterMetaType<QWebElement&>("myElement");

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

谢谢。

最佳答案

我假设您正在尝试使用引用 (&) 注册 QWebElement,因为已经对插槽进行了原型(prototype)设计以将 QWebElement 作为引用,但是如果您将信号从一个线程发布到另一个线程,这不是一个好主意, 请参阅 here .无论如何,正如 Laszlo 所指出的,您必须注册基本类型,使用引用标记 (&) 注册类型是没有意义的。

关于c++ - 来自线程的 Qt 信号导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886736/

相关文章:

c++ - 在 Qt 图形 View 中锁定选择

c++ - 总的通用指针类型是什么?

c++ - 如何在 bazel 中设置动态加载的库依赖项?

c++ - Hook 键盘以更改键码

c++ - QTableView 如何突出显示鼠标悬停的整行?

c++ - 将 nullptr QVariant 与空 QString 进行比较会在 Qt5.9 和 Qt5.12 中给出不同的输出

c++ - 为什么使用默认构造函数构造的对象的 `sizeof` 总是得到 1?

Qt 和 RTI DDS 交互---需要一些指导

Linux 上的 QtCreator : 32-bits vs. 64 位

c++ - 如何将 QT 国际化集成到 CMake?