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 ...
随机推荐
- AGC005 部分简要题解
E 首先注意到这个问题事实上非常复杂(两棵树上博弈),基础的转化无效,于是考虑简化情形. 手玩很多样例可以发现,似乎很容易出现无限循环的情况,进一步地,有观察: 若第一棵树上存在相邻点 \(u, v\ ...
- Argo 安装和 workflow 实例配置文件解析
一.Argo 安装配置 1.1 Argo 安装 $ kubectl create ns argo $ kubectl apply -n argo -f https://raw.githubuserco ...
- navicat连接mysql报错1251解决方案
感谢原文作者:XDMFC 原文链接:https://blog.csdn.net/xdmfc/article/details/80263215 问题描述 今天下了个 MySQL8.0,发现Navicat ...
- php截取字符串,避免乱码
转载请注明来源:https://www.cnblogs.com/hookjc/ 1. 截取GB2312中文字符串 <?php//截取中文字符串 function mysubstr($str, $ ...
- MySQL5.7 库、表结构、表字段的查询、更改操作
1.查询所有数据库 SHOW DATABASES; 2.查询库中所有表 写法1: ① USE [DATABASE_NAME]; ② SHOW TABLES; 写法2: SHOW TABLES FROM ...
- 字符编码和Python代码操作文件
字符编码和Python代码操作文件 读写模式之a模式 # a模式 只追加模式 # 路径不存在:自动创建 with open(r'a.txt','a',encoding='utf8') as f: pa ...
- Solution -「ABC 219H」Candles
\(\mathcal{Description}\) Link. 有 \(n\) 支蜡烛,第 \(i\) 支的坐标为 \(x_i\),初始长度为 \(a_i\),每单位时间燃烧变短 \(1\) ...
- HashMap(1.7)源码学习
一. 1.7 和1.8区别 数据结构: 1.7: 数组 + 链表 1.8 : 数组 + 链表 + 红黑树 put: 1.7: 头插法 1.8: 尾插法 hash计算: 1.7 : Objects.ha ...
- tip8:CentOS8安装ftp服务器
之前习惯使用OpenSuse,其图形化的安装.现在刚开始使用CentOS,老老实实使用命令吧! 1.本地cmd命令ftp链接虚拟机无法链接.查出虚拟机ftp服务是否开启:没有 ps -ef|grep ...
- Eureka工作原理及心跳机制
Eureka原理 1.基本原理上图是来自eureka的官方架构图,这是基于集群配置的eureka:处于不同节点的eureka通过Replicate进行数据同步Application Service为服 ...