Qt_QVariant Qt_QVariantQVariant 是 Qt 框架中一个非常实用的类它类似于 C 的 union但功能更强大可以安全地存储几乎所有常见的 Qt 数据类型和 C 基本类型。为什么需要 QVariantC 原生的 union 不允许包含有非默认构造函数或析构函数的类型因此大多数 Qt 类无法放入 union 中。QVariant 解决了这个问题广泛应用于 QObject::property()、数据库操作、信号槽传参等场景。QVariant支持的类型Variant 默认支持以下类型C 基本类型int、uint、bool、double、float、qlonglong、qulonglongQt 核心类型QString、QByteArray、QChar、QStringList、QDate、QTime、QDateTime、QUrl、QUuid几何类型QPoint、QPointF、QSize、QSizeF、QRect、QRectF、QLine、QLineF容器类型QListQVariant即 QVariantList、QMapQString, QVariant即 QVariantMap、QHashQString, QVariant即 QVariantHashJSON 类型QJsonValue、QJsonObject、QJsonArray、QJsonDocumentGUI 类型需通过valueT() 访问QColor、QFont、QPixmap、QBrush、QPen 等基本用法存储数据// 通过构造函数QVariantv1(123);QVariantv2(hello);QVariantv3(3.14);// 通过 setValue()QVariant v4;v4.setValue(42);// 通过静态方法 fromValue()QVariant v5QVariant::fromValue(100);读取数据QVariantv(123);intiv.toInt();// i 123QString sv.toString();// s 123doubledv.toDouble();// d 123.0boolbv.toBool();// b true// 模板方式通用intvalv.valueint();类型判断与转换QVariantv(42);v.typeName();// 返回 intv.userType();// 返回 QMetaType::Intv.canConvertQString();// 返回 truev.canConvertQColor();// 返回 false// 强制转换v.convert(QMetaType::QString);// 转换后存储 42自定义类型的使用对于自定义类型struct或class需要满足两个条件有默认构造函数和拷贝构造函数使用 Q_DECLARE_METATYPE() 宏注册类型// 头文件中定义并注册structStudent{intid;QString name;intage;};Q_DECLARE_METATYPE(Student)// 使用Student stu;stu.id1;stu.name张三;stu.age18;// 存储QVariant varQVariant::fromValue(stu);// 读取if(var.canConvertStudent()){Student svar.valueStudent();qDebug()s.names.age;}存储指针// 保存QVariant varQVariant::fromValue((void*)somePointer);// 获取SomeType*ptr(SomeType*)var.valuevoid*();处理不支持的基本类型对于 short、char 等 QVariant 没有专用构造函数的类型可以先转为 int 存取// char - QVariantQVariant varB;// 实际存储为 int(66)charc(char)var.toInt();// 取出后转回 char// short - QVariantshorts12;QVariant var2s;// 实际存储为 int(12)shorts2(short)var2.toInt();常用 API 速查方法说明setValue(const T )存储值fromValue(const T )静态方法创建含值的 QVarianttoT()转换为具体类型如toInt()、toString()valueT()模板方式取值适用于自定义类型canConvertT()判断能否转换为类型 Tconvert(int)强制类型转换type()/userType()获取存储类型typeName()获取类型名称字符串isNull()是否为空值isValid()是否为有效类型clear()清空为UnknownTypeend~

相关新闻

最新新闻

音频分帧加窗原理与MATLAB实现:帧长帧移窗函数及重构要点

音频分帧加窗原理与MATLAB实现:帧长帧移窗函数及重构要点

简介:本资源是面向数字信号处理初学者与音频算法实践者的MATLAB基础工具包,聚焦音频预处理核心环节——信号分帧与加窗操作,解决语音识别、声纹分析、频谱计算等任务中时频域转换的入门实操难题。压缩包共3个文件,含2个关键.m函数…

2026/9/1 0:36:10
Python+OpenCV照片卡通化:边缘提取与颜色量化核心原理与参数调优

Python+OpenCV照片卡通化:边缘提取与颜色量化核心原理与参数调优

简介:本资源是一个基于Python实现的照片卡通化转换系统,面向图像处理初学者、计算机视觉爱好者及数字艺术创作者,解决真人照片自动转为卡通风格图像的技术需求,适用于社交头像生成、游戏素材制作与AI艺术创作等场景。压缩包共24个…

2026/9/1 0:36:10
加权TOPSIS详解:熵权法确定权重与Python实现

加权TOPSIS详解:熵权法确定权重与Python实现

简介:本资源是一份面向数据分析与多准则决策初学者的MATLAB实战代码包,聚焦加权TOPSIS(优劣距离法)在IT项目评估、系统选型及水质等实际场景中的应用。它解决了多指标评价中权重设定与距离计算的核心难点,帮助用户快速…

2026/9/1 0:36:10
全国地铁线路SHP数据处理全攻略:解压、坐标系纠偏与GIS分析

全国地铁线路SHP数据处理全攻略:解压、坐标系纠偏与GIS分析

简介:本资源为2024年全国地铁线路矢量数据(SHP格式),面向城市规划师、GIS从业人员、交通研究者及高校地理信息相关专业师生,解决城市交通网络建模、站点服务范围分析、应急疏散路径规划等核心场景中的基础底图与空间分…

2026/9/1 0:36:10
Matlab实现GA-XGBoost回归预测与SHAP可解释分析完整方案

Matlab实现GA-XGBoost回归预测与SHAP可解释分析完整方案

简介:本资源是一套面向科研人员与工程实践者的MATLAB智能建模工具包,聚焦于XGBoost回归模型的参数优化、可解释性分析与实际预测应用。针对传统XGBoost超参数调优依赖经验、特征贡献难以量化的问题,资源集成遗传算法(GA&#xff0…

2026/9/1 0:36:10
OSGB不是格式而是瓦片规则:倾斜摄影数据交付避坑指南

OSGB不是格式而是瓦片规则:倾斜摄影数据交付避坑指南

简介:这是一份倾斜摄影OSGB格式的三维地理空间数据包,以武汉某景点的多角度航拍建模成果为实例,适合测绘、GIS、城市规划及相关专业学生与从业者,用于学习倾斜摄影数据组织与OSGB格式的典型应用方式。压缩包共267个文件&#xff0…

2026/9/1 0:31:09