/*
* 1-可变类型 QVariant
* 2-QVariant储存基本类型
* 3-QVariant储存自定义复杂类型 存储setValue()和取出value<类型>()
* 4-QVariant是否为空
*/
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include<QDebug>
struct X_ //自己定义的结构体
{
int num;
};
Q_DECLARE_METATYPE(X_) //让元对象知道是自定义类型,没有的话编译报错
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
//储存基本数据类型
QVariant v1("111"); //可变类型
QString v11=v1.toString();
bool b=v1.canConvert<qlonglong>();//判断能不能转换 canConvert
bool ok(false);
qlonglong v111=v1.toLongLong(&ok);//参数ok可以获取到 是否能转换bool值
//储存自定义复杂数据类型
struct X_ x; //使用结构体
x.num=99;
QVariant v2;
v2.setValue(x);//存储自定义类型 需要让元对象知道见第14行
X_ xout=v2.value<X_>(); //注意写上模板参数(自定义类型)
//是否内部有数据
QVariant v3;
qDebug()<<v3.isValid();//false
v3.setValue(1);
qDebug()<<v3.isValid();//true
return app.exec();
}
可变类型 QVariant 储存各种类型
最新推荐文章于 2024-12-26 18:21:47 发布
本文介绍了QVariant在Qt中的灵活运用,包括存储基本数据类型如字符串和数值,自定义结构体,以及如何检查其是否为空。通过实例展示了如何设置和获取不同类型的数据,并利用Q_DECLARE_METATYPE确保元对象识别自定义类型。

8814

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



