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

最低0.47元/天 解锁文章
3482

被折叠的 条评论
为什么被折叠?



