我目前正在与Qt合作,以构建一个能够发送和接收通过QSerialPort
连接的数据包的应用。
为此,我有一个对象连接我的应用程序和设备之间的通信。
在这个课程中,我可以调用一个运行成员函数来启动通信。
在该方法中,连接如下:
qRegisterMetaType<QSerialPort::SerialPortError>();
connect(this->_serialPort, SIGNAL(error(QSerialPort::SerialPortError)), this->_parent,
SLOT(handleSerialError(QSerialPort::SerialPortError)), Qt::QueuedConnection);
在这里,我的问题是无论我尝试了什么,我总是从第{6}行的QtCore
,qglobal.h
的包含文件中收到错误,指的是第一行代码我尝试注册元类型SerialPortError
。
错误:
未注册类型,请使用Q_DECLARE_METATYPE宏 让它知道Qt的元对象系统。
这就是我的所作所为!从我的代码中的任何地方,类内部,名称空间内部,甚至全局中,我都调用了宏Q_DECLARE_METATYPE(QSerialPort::SerialPortError)
,但没有什么进展顺利:/
这是我第三天在网上查找以解决此错误,而且我已经没时间了。
我无法弄清楚我做错了什么或误解了什么。
有人能帮助我吗?你有没有遇到过这个错误?
谢谢你,大卫
答案 0 :(得分:0)
QSerialPort
继承QObject
,因此错误类型枚举应已通过Q_ENUMS
注册。你不需要重新注册。
答案 1 :(得分:-1)
我有同样的错误,我设法修复它而不使用Q_DECLARE_METATYPE。
您是否尝试过:qRegisterMetaType<QSerialPort>();
因为我在代码中所做的只是那个......只需注册该类。即使它给了我同样的错误,告诉我使用Q_DECLARE_METATYPE。