QVariant 的核心用途


QVariant 是 Qt 中用于统一封装多种数据类型的通用容器类,能够在不同模块间传递未知或动态类型的数据。其核心使用场景如下:

场景 描述
Qt 属性系统 存储 QObject 的动态属性,支持任意类型。
模型/视图框架 QAbstractItemModel 中通过不同角色(如显示文本、图标)返回多种类型数据。
跨信号槽传递多类型参数 通过 QVariant 封装不同类型参数,统一信号与槽的接口。
配置存储与序列化 保存应用配置(如 QSettings)或序列化数据(如 JSON、XML),处理多类型字段。
数据库操作 处理数据库查询结果中的异构字段类型(如整数、字符串、日期)。
自定义类型处理 通过注册自定义类型,允许 QVariant 存储用户定义的结构体或类实例。

具体用例及代码

1. 动态属性存储(Qt属性系统)
#include <QObject>
#include <QVariant>
#include <QDebug>

class UserData : public QObject {
   
   
    Q_OBJECT
public:
    // 设置动态属性
    void setProperty(const QString &name, const QVariant &value) {
   
   
        QObject::setProperty(name.toUtf8(), value);
    }

    // 获取动态属性
    QVariant getProperty(const QString &name) {
   
   
        return QObject::property(name.toUtf8());
    }
};

int main() {
   
   
    UserData obj
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值