首页 > 其他 > 详细

Qt:QVariant

时间:2021-07-13 14:47:24      阅读:14      评论:0      收藏:0      [点我收藏+]

0、说明

QVariant可以表现出Qt数据类型中最普遍的行为。

一个QVariant对象中一次只保留一个type()的单个值(有的type()可以是多值的,例如StringList),可以用convert()将它的类型转换为不同的类型,用toT()(这里的并不是实际的函数,T是一个泛型)获取它的值,如toInt(), toString(),它们返回的值是const的。

如果一个QVariant在定义时就是一个null值,那么它在转化为其它类型时,依然是null。

GUI类型

由于QVariantQt Core模块的一部分,所以它并不提供和Qt GUI类型(如QColor、QImage、QPixmap)进行转换的函数,也就是说,不存在toColor()函数。不过,我们可以用QVariant::value()或qvariant_cast()模板函数进行转换,例如,下文是把一个QVariant转换为QColor的代码:

QVariant variant;
...
QColor color = variant.value<QColor>();

逆向转化(将QColor转换为QVariant)对所有类型(包括Core和GUI)都是自动进行的:

QColor color = palette().background().color();
QVariant variant = color;

 

1、模块和加载项

Header: #include <QVariant>
qmake: QT += core

2、构造

QVariant(QType val) 这里的QType是指Qt中常见的如float、qlonglong、int、QMap、QDateTime等类型,因为太多了,基本上常用的都涵盖其中了,所以这里不再写全

 

5、静态方法

返回值类型

方法

说明

QVariant fromStdVariant(std::variant<Types...> value) 返回一个指定类型Types和值value的QVariant
QVariant fromValue(T value) 返回包含了指定类型T和值value的QVariant
QVariant::Type nameToType(const char *name) 返回name代表的Type
const char * typeToName(int typeId) 返回Type的name

 

6、实例方法

返回值类型

方法

说明

 QVariant &

bool

bool

operator=(QVariant variant)

operator!=(QVariant v)

operator==(QVariant v)

赋值

是否相等

bool 

canConvert(int targetTypeId)

是否可以转化为指定类型
 void clear() 将类型转化为QMetaType::UnknownType并释放占有的资源
 bool convert(int targetTypeId) 将QVariant转化为需要的类型
 bool isNull() 是否为null
 bool isValid() 是否合法,即不是QMetaType::UnknownType
 void setValue(T value) 设置QVariant的值
 void swap(QVariant &other) 交换两个QVariant的值
 T toT() 将QVariant转换为T并返回
 QVariant::Type type()
返回QVariant中值的类型
const char *   typeName() 返回QVariant中值的类型的const char *形式
 int userType()  返回QVariant中值的类型
 template <typename T> T  value()

常用于非core类型T的转换,当然core类型也可以转换

QVariant v;

MyCustomStruct c;
if (v.canConvert<MyCustomStruct>())
    c = v.value<MyCustomStruct>();

v = 7;
int i = v.value<int>();                        // same as v.toInt()
QString s = v.value<QString>();                // same as v.toString(), s is now "7"
MyCustomStruct c2 = v.value<MyCustomStruct>(); // conversion failed, c2 is empty

Qt:QVariant

原文:https://www.cnblogs.com/ShineLeBlog/p/15004154.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!