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 ...
随机推荐
- 不难懂——th: 的常用标签
关键字> 功能介绍 > 案例 th:id 替换id <input th:id="'xxx' + ${collect.id}"/> ...
- ES入门三部曲:索引操作,映射操作,文档操作
ES入门三部曲:索引操作,映射操作,文档操作 一.索引操作 1.创建索引库 #语法 PUT /索引名称 { "settings": { "属性名": " ...
- 你我都会遇到的需求:如何导出MySQL中的数据~ 简单!实用!
目录 你我都有的需求 方式一:tee 方式二:mysql_use_result 推荐阅读 一.给研发同学看的面试指南 二.MySQL-视频 三.进阶MySQL中间件-视频 四.白日梦的云原生-笔记 五 ...
- ApacheCN 深度学习译文集 2020.9
协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活原则 2.3.c 在线阅读 ApacheCN 面试求职交流群 72418 ...
- ApacheCN 所有教程/文档集已备份到 Coding
QuantLearning 数据科学 WIKI 安全 WIKI 团队 WIKI Sklearn 中文文档 PyTorch 中文文档 TutorialsPoint 中文系列教程 Java8 中文官方教程 ...
- 深坑react 引入antd无效问题
//安装babel-plugin-import 第一步:npm install babel-plugin-import --save第二步:暴露webpack.config.js运行:npm run ...
- [POI2009]SLO-Elephants
首先可以发现我们可以发现最终状态和初始状态都是一个大小为 \(n\) 的排列,且恰好有 \(n\) 种关系,于是我们对于每个 \(a_i\) 连一条 \(a_i \rightarrow b_i\) 的 ...
- 理解java线程的中断(interrupt)
一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果比如会带着自己所持有的锁而永远的休眠,迟迟不归还锁等. 所以你看到Thread.suspend, Threa ...
- 自定义的类实现copy操作
1.自定义类实现copy操作 让类遵守NSCopying协议 实现 copyWithZone:方法,在该方法中返回一个对象的副本即可. 在copyWithZone方法中,创建一个新的对象,并设置该对象 ...
- 详解xpath定位
xpath定位 1.通过开发者工具直接copy 右击copy-copy xpath 2.串联的方式定位元素 from selenium import webdriverfrom time import ...