Qt的QVaiant中使用非QMetaType类型缺少Q_DECLARE_METATYPE宏定义错误
报错:
E:\Qt\Qt5.9.3\5.9.3\mingw53_32\include\QtCore\qglobal.h:738: error: static assertion failed: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system
#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
报错代码:
const QCameraInfo &cameraInfo
...
QVariant::fromValue(cameraInfo)
原因:
QVaiant 不能识别自定义类型和其他非 QMetaType 内置类型, 而 QCameraInfo 是非 QMetaType 内置类型,因此使用QVariant::fromValue(cameraInfo)
之前,需要使用
Q_DECLARE_METATYPE
宏对 QCameraInfo 进行声明。
解决:
在代码中加个宏定义:
Q_DECLARE_METATYPE(QCameraInfo)