QVariant 完整详细介绍

QVariant 完整详细介绍 目录QVariant 完整详细介绍一、什么是 QVariant核心定位二、支持存储的所有类型大类1. 基础 C++ 原生类型2. Qt 内置基础类型3. 对象指针(QObject 子类)4. 自定义结构体 / 类三、基础用法:存入、取出、类型判断1. 存入数据(构造 /setValue)2. 取出数据(toXX () 系列函数)3. 模板取值 value()(推荐,强类型安全)4. 判断存储的真实类型四、两大复合容器:QVariantList / QVariantMap1. QVariantList = QList 数组2. QVariantMap = QMap 键值对五、Qt 四大核心场景(高频使用)场景 1:QObject 属性系统 Q_PROPERTY场景 2:Model/View 视图框架(QTableWidget / QAbstractItemModel)场景 3:信号槽传参(统一泛型参数)场景 4:配置文件、JSON 序列化六、存储自定义结构体 / 类(进阶)七、常用关键成员函数速查表八、常见坑与注意事项九、极简对比QVariant 完整详细介绍一、什么是 QVariantQVariant是 Qt 提供的通用数据容器,可以存放任意单一类型的数据,相当于 Qt 版的 “万能变量”。 C++ 原生没有统一的通用类型(int、double、QString、QWidget*、QDate 不能用同一个容器装),QVariant解决了类型统一存储、传递的问题。核心定位统一接口参数 / 返回值:信号槽、Model/View、属性系统、配置读写、Item 数据都靠它传任意类型;类型自动安全转换,自带类型识别;不依赖模板,跨模块通用。二、支持存储的所有类型大类1. 基础 C++ 原生类型int、short、long long、unsigned int、bool、float、double、char2. Qt 内置基础类型QString、QByteArray、QDate、QTime、QDateTime、QPoint、QPointF、QRect、QRectF、QSize、QSizeF、QColor、QFont、QPixmap、QImage、QUrl、QVariantList、QVariantMap3. 对象指针(QObject 子类)QObject*、各类控件指针(QWidget*、QPushButton*)4. 自定义结构体 / 类配合Q_DECLARE_METATYPE注册后,可存入 QVariant。三、基础用法:存入、取出、类型判断1. 存入数据(构造 /setValue)cpp运行// 方式1:直接构造赋值 QVariant v1(123); QVariant v2("字符串"); QVariant v3(QString("Qt")); QVariant v4(true); QVariant v5(QColor(255,0,0)); // 方式2:setValue 动态修改 QVariant v; v.setValue(3.1415); v.setValue(QPointF(100,200));2. 取出数据(toXX () 系列函数)每个类型都有对应的转换函数,转换失败返回默认值:cpp运行QVariant v(100); int num = v.toInt(); double d = v.toDouble(); QString str = v.toString(); bool b = v.toBool(); QVariant colorVar(QColor(Qt::red)); QColor c = co