Q_DECLARE_METATYPE(A::Test) 今天遇到了莫名其妙的编译错误,原因是我用QVariant设置一个自定义指针类型的Data,这时就需要Q_DECLARE_METATYPE(Type*)了,如果设置了Q_DECLARE_METATYPE(Type),Qt只能识别Type类型,而未能识别其指针类型!!! 另外自定义类型中一定要有默认构造函数,如果已经显式的定义了带有无默认参数...
特别是当枚举类型需要在信号与槽之间传递,或者作为类的属性时,这些宏的应用就显得尤为重要。此外,对于需要在QVariant中存储的枚举类型,不要忘了使用Q_DECLARE_METATYPE进行声明,以确保类型信息的正确传递。 总之,Q_ENUM和Q_ENUMS是Qt开发中不可或缺的工具,它们让枚举类型在Qt的元对象系统中焕发出新的生命力。通过...
命名规范:为枚举和标志选择清晰、描述性的名称,避免使用过于泛化或模棱两可的词汇。 使用Qt类型系统:通过Q_DECLARE_METATYPE、Q_DECLARE_FLAGS等宏,充分利用Qt的类型系统,增强代码的健壮性和灵活性。 文档和注释:为枚举和标志提供详细的文档和注释,尤其是当它们用于API或库时。 通过上述宏的使用,你可以使Qt项目中...
此图为Qt5.x中源码 此图为Qt6.x中源码
QVaiant 不能识别自定义类型和其他非 QMetaType 内置类型, 而 QCameraInfo 是非 QMetaType 内置类型,因此使用QVariant::fromValue(cameraInfo)之前,需要使用Q_DECLARE_METATYPE宏对 QCameraInfo 进行声明。 解决 在代码中加个宏定义: 1 Q_DECLARE_METATYPE(QCameraInfo) ...
//注册到元对象Q_DECLARE_METATYPE(QWeakPointer<Plot>)//设置数据item->setData(QVariant::fromValue(plot.toWeakRef()),Qt::UserRole);//取数据QWeakPointer<Plot>plot=treeModel->data(index,Qt::UserRole).value<QWeakPointer<BasePlot>>(); ...
除了标准类型, 我们自定义的类型也可以使用QVariant类进行封装,被QVariant存储的数据类型需要有一个默认的``构造函数``和一个拷贝构造函数。为了实现这个功能,首先必须使用Q_DECLARE_METATYPE()宏。 使用QVariant操作自定义数据类型的数据 class MM { public: ...
("utf-8") Q_DECLARE_METATYPE(QDockWidget::DockWidgetFeatures) QString MenuBarStyle = "QMenuBar{background-color:#FFFFFF; font:14px; color:#232323;}" "QMenuBar::item{\ min-height:40px; \ margin:1 10 0 10px; \ padding:10 10 10 10px; /* 条目内边框 */ \ background:#FFFFFF;...
#include <string>#include <locale>#include <codecvt>// convert string to wstringinline std::...
#include "MainFramework.h" #include "ui_MainFramework.h" #include <QDesktopWidget> #include <QDebug> #include <QStandardPaths> #include <QTimer> #include <QHBoxLayout> #include <QSpacerItem> #pragma execution_character_set("utf-8") Q_DECLARE_METATYPE(QDockWidget::DockWidgetFeatures) QString...