QVariant 是 Qt 中用于封装各种类型数据的通用类。它能够存储和传递几乎所有的 Qt 和用户定义的数据类型,并提供了方便的接口来访问和操作这些数据。以下是 QVariant 的一些常见用法:
- 存储基本数据类型和
QString:cppCopy codeQVariant intValue = 42;
QVariant floatValue = 3.14;
QVariant stringValue = "Hello, world!";
- 存储和检索自定义类型:
class MyType {
// 自定义类型的定义
};
MyType myObject;
QVariant customValue = QVariant::fromValue(myObject);
MyType retrievedCustomValue = customValue.value<MyType>();
- 检查存储的值的类型:
QVariant variant = 42;
if (variant.type() == QVariant::Int) {
// 值是整数类型
} else if (variant.type() == QVariant::String) {
// 值是字符串类型
}
- 使用 QVariantList 存储列表数据:
QVariantList list;
list << 1 <<2 <<3 << "Hello";
- 使用 QVariantMap 存储键值对数据:
QVariantMap map;
map["name"] = "John";
map["age"] = 30;
- 通过 QVariant 传递参数给信号和槽:
MyClass::mySlot(const QVariant &data) {
if (data.canConvert<int>()) {
int intValue = data.toInt();
// 处理整数值
} else if (data.canConvert<QString>()) {
QString stringValue = data.toString();
// 处理字符串值
}
}
- 使用 QVariant::isValid() 检查 QVariant 是否有效:
QVariant variant;
if (variant.isValid()) {
// QVariant 有效
} else {
// QVariant 无效
}
- 清除 QVariant 的内容:
variant.clear();
总的来说,QVariant 是一个非常灵活和方便的类,用于在 Qt 中处理各种类型的数据。