为什么qRegisterMetaType会给我一个错误?

时间:2015-04-09 09:46:53

标签: c++ qt qtserialport

我目前正在与Qt合作,以构建一个能够发送和接收通过QSerialPort连接的数据包的应用。

为此,我有一个对象连接我的应用程序和设备之间的通信。

在这个课程中,我可以调用一个运行成员函数来启动通信。

在该方法中,连接如下:

qRegisterMetaType<QSerialPort::SerialPortError>();
connect(this->_serialPort, SIGNAL(error(QSerialPort::SerialPortError)), this->_parent,
SLOT(handleSerialError(QSerialPort::SerialPortError)), Qt::QueuedConnection);

在这里,我的问题是无论我尝试了什么,我总是从第{6}行的QtCoreqglobal.h的包含文件中收到错误,指的是第一行代码我尝试注册元类型SerialPortError

错误:

  

未注册类型,请使用Q_DECLARE_METATYPE宏   让它知道Qt的元对象系统。

这就是我的所作所为!从我的代码中的任何地方,类内部,名称空间内部,甚至全局中,我都调用了宏Q_DECLARE_METATYPE(QSerialPort::SerialPortError),但没有什么进展顺利:/

这是我第三天在网上查找以解决此错误,而且我已经没时间了。

我无法弄清楚我做错了什么或误解了什么。

有人能帮助我吗?你有没有遇到过这个错误?

谢谢你,大卫

2 个答案:

答案 0 :(得分:0)

QSerialPort继承QObject,因此错误类型枚举应已通过Q_ENUMS注册。你不需要重新注册。

答案 1 :(得分:-1)

我有同样的错误,我设法修复它而不使用Q_DECLARE_METATYPE。

您是否尝试过:qRegisterMetaType<QSerialPort>();

因为我在代码中所做的只是那个......只需注册该类。即使它给了我同样的错误,告诉我使用Q_DECLARE_METATYPE。