Qt:QVariant
0、说明
QVariant可以表现出Qt数据类型中最普遍的行为。
一个QVariant对象中一次只保留一个type()的单个值(有的type()可以是多值的,例如StringList),可以用convert()将它的类型转换为不同的类型,用toT()(这里的并不是实际的函数,T是一个泛型)获取它的值,如toInt(), toString(),它们返回的值是const的。
如果一个QVariant在定义时就是一个null值,那么它在转化为其它类型时,依然是null。
GUI类型
由于QVariant是Qt 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; |
Qt:QVariant的更多相关文章
- Qt:QJsonValue
0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...
- Qt:禁止qDebug的输出
Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT
- Qt:使用自定义的字体
Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体 QFontDatabase::addApplicationFont("XENOTRON.TTF" ...
- Qt:QJsonObject
0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...
- Qt:QJsonArray
0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...
- Qt:QUrl构造时的qrc前缀
参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...
- QT:多线程HTTP下载文件
这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器 ...
- Qt:QTableWidgetItem
0.说明 QTableWidgetItem指明QTableWidget中的一个Item.Item通常包含文本.图标.checkbox. 最常用的构造Item的方式是:不指定该Item所在的TableW ...
- Qt:QListWidgetItem
0.说明 一个QListWidgetItem是QListWidget中的一项(一行). 每个Item都可以持有多部分的信息,并将它们在适当时候展示出来. 在构造一个Item时指明它所在的List Wi ...
随机推荐
- 使用内联的 CSS 变量技巧,提高灵巧布局效率!
作者:Ahmad shaded 译者:前端小智 来源:sitepoint 点赞再看,微信搜索**[大迁世界]**关注这个没有大厂背景,但有着一股向上积极心态人.本文 GitHub github.com ...
- 【Azure Developer】Azure Logic App 示例: 解析 Request Body 的 JSON 的表达式? triggerBody()?
问题描述 通过Azure Logic App(逻辑应用)实现无代码的处理JSON数据.但是如何获取Request Body中的一个属性值呢? 例如:如何来获取以下JSON结构中的 ObjectName ...
- HTTPS加密证书流程(2)
目录 一:HTTPS加密证书流程 二:证书对比 三:自签证书 1.(lb服务器负载均衡代理) 2.(创建CA证书 创建密码) 3.生成自签证书(公钥),同时去掉私钥的密码(Enter) 四:证书内容解 ...
- How to find out which process is listening upon a port
When we covered port scanning a short while ago we discovered how to tell which ports had processes ...
- k8s-基础篇
搭建k8s环境 Myapp镜像部署扩容pod自愈负载均衡DNS外网访问滚动更新YAML方式部署独立部署podRS副本控制器Deployment-自动扩容Deployment-更新版本Deploymen ...
- Spring源码-IOC部分-循环依赖-用实例证明去掉二级缓存会出现什么问题【7】
实验环境:spring-framework-5.0.2.jdk8.gradle4.3.1 Spring源码-IOC部分-容器简介[1] Spring源码-IOC部分-容器初始化过程[2] Spring ...
- Thread中常用API
1.sleep方法 线程的 sleep 方法会使线程休眠指定的时间长度.休眠的意思是,当前逻辑执行到此不再继续执行,而是等待指定的时间.但在这段时间内,该线程持有的锁并不会释放.这样设计很好理解,因为 ...
- HTTPS的基本使用
1.https简单说明 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的 ...
- 对JSP中的Session 简单理解
我的理解: 简单来说,要使用服务器端的session对象,就是要有其对应的key,即sessionid,它只认识sessionid. 下面我说的cookie,url重写或者隐藏表单,都是为了将其对应的 ...
- 键盘弹起及lab时的动态计算高度 --董鑫
1.键盘抬起或掉下时,动态计算高度 2.动态计算Label的高度 计算的高度时,numberOfLines必须设置为0: 2.1 ios7.0之后 2.2 iOS 7.0之前