/*
* 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 储存各种类型
最新推荐文章于 2023-07-27 23:01:59 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)