QVariant

it2023-08-15  68

目的

主要是为了熟悉QVariant与Qt 通用数据类型或者自定义数据类型进行转换. QVariant类充当最常见Qt数据类型的联合。 因为c++禁止union包含具有非默认构造函数或析构函数的类型,所以大多数有趣的Qt类都不能在union中使用。如果没有QVariant,这将成为QObject::property()和数据库工作等的问题。

Qt data type

1: 第一种转换 QIcon ICON("xxx.png"); QVariant variant = ICON; QIcon icon = variant.value<QIcon>(); 2: 第二种转换 int a = 10; QVariant variant(a); int c = variant.value<int>(); int d = variant.toInt();

custom type

使用一个自定义类型, 需要在类声明的后面加上:Q_DECLARE_METATYPE(), struct MyClass { QString name; } Q_DECLARE_METATYPE(MyClass). MyClass myClass1; QVariant variant = QVairant::fromValue(myClass1); variant .canConvert<MyClass>(); MyClass myClass2 = v2.value<MyClass>(); 如果是指针, 转换如下 MyClass* myClass1; QVariant variant = QVariant::fromValue((void*)myClass1); MyClass* myClass2;= (MyClass*)variant.value<void*>();

还有更多组合关于QVariant

QVariantMap = QMap<QStrint, QVariant> QVariantList = QList<Variant> QVariantHash = QHash<QString, QVariant>
最新回复(0)