目录

1. 存储数据:

2. 获取数据:

3. 判断数据类型:

4. 设置数据:

5. 判断数据是否有效:

6.附上一个例子演示:


QVariant 是 Qt 框架中的一种数据类型,它可以用来存储任意类型的数据。QVariant 是一个通用的数据容器,它可以存储基本数据类型(如 int、float 等)、

(1)C++基本类型,如 int、float等。

(2)Qt的数据类型,包括QBrush、QColor、QCursor、QDate、QTime、QDateTime、QFont、QKeySequence、 QPalette、QPen、QPixmap、QPoint、QRect、QRegion、QSize、QString、QUrl、QImage 等 Qt 类型,以及用户自定义的类型。

使用 QVariant 可以方便地实现类型转换和数据共享。QVariant 提供了一些方法用于获取和设置数据,如 toInt、toFloat、toString、toDate、toTime、toDateTime、toUrl、toImage 等方法。此外,QVariant 还提供了一些方法用于判断数据类型,如 isNull、isValid、canConvert 等方法。

以下是 QVariant 的常见用法:

1. 存储数据:

QVariant var = 10; // 存储整型数据
QVariant var2 = "hello world"; // 存储字符串数据
QVariant var3 = QDateTime::currentDateTime(); // 存储日期时间数据

2. 获取数据:

int value = var.toInt(); // 获取整型数据
QString str = var2.toString(); // 获取字符串数据
QDateTime dateTime = var3.toDateTime(); // 获取日期时间数据

3. 判断数据类型:

if (var.type() == QVariant::Int) {// 数据类型为整型
}
if (var2.canConvert<QString>()) {// 数据可以转换为字符串类型
}

4. 设置数据:

var.setValue(20); // 设置整型数据
var2.setValue("new value"); // 设置字符串数据
var3.setValue(QDateTime::currentDateTime()); // 设置日期时间数据

5. 判断数据是否有效:

if (var.isNull()) {// 数据为空
}
if (var.isValid()) {// 数据有效
}

总之,QVariant 是一个非常方便的数据容器,可以用于存储和获取各种类型的数据。在 Qt 编程中,QVariant 经常被用于数据传递和类型转换。

6.附上一个例子演示:

//声明类型

#define ITEM_ID         Qt::UserRole +1

#define ITEM_ADD        Qt::UserRole +2

#define ITEM_INDEX      Qt::UserRole +3

#define ITEM_IMG        Qt::UserRole +4

//存数据

QListWidgetItem* item = new QListWidgetItem();

item->setData(ITEM_ID, "id");

item->setData(ITEM_ADD, false);

item->setData(ITEM_INDEX, 1);

QPixmap pix = QPixmap("xx/xx.png")

item->setData(ITEM_IMG, pix);

//取数据

QString id = widgetItem->data(ITEM_ID).toString();

bool add = widgetItem->data(ITEM_ADD).toBool();

QString index = widgetItem->data(ITEM_INDEX).toInt();

QPixmap pix = widgetItem->data(ITEM_IMG).value<QPixmap>();

QVariant的强大用法相关推荐

  1. es6中reduce的用法_es6中reduce的基本使用方法

    前言 为啥要把es6 中 reduce 单独拿出来说呢,因为这个功能实在太骚,值得如此. reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值.reduc ...

  2. Spring Boot 2.x基础教程:使用Redis的发布订阅功能

    通过前面一篇集中式缓存的使用教程,我们已经了解了Redis的核心功能:作为K.V存储的高性能缓存. 接下来我们会分几篇来继续讲讲Redis的一些其他强大用法!如果你对此感兴趣,一定要关注收藏我哦! 发 ...

  3. modbus报文解析工具_Linux下网络流量常用那些监控工具

    这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof.ip.tcpdump.iptables等.本文不会深入研究这些命令的强大用法,因为每个命令都足以写一篇文章,本文只是简单地介绍并辅 ...

  4. lambda stream 循环_jdk8-lambda-stream的使用

    1, 认识stream(声明式编程) Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator, 原始版本的Iterator,用户只能一个一 ...

  5. 结束拒绝访问的进程 cmd下结束进程 强行结束进程

    结束拒绝访问的进程 有些病毒和恶意进程我们在任务管理器里面是不能结束的,这个时候,如果又没有工具,就很麻烦了,今天看网管员世界,提到了一种方法,能够解决: 根本的思想是用system的权限来运行tas ...

  6. watch | 监听器、computend

    区别: 功能上:computed是计算属性,watch是监听一个值的变化,然后执行对应的回调. 是否调用缓存:computed中的函数所依赖的属性没有发生变化,那么调用当前的函数的时候会从缓存中读取, ...

  7. html图片背景属性,css 背景(background)属性、背景图定位

    background属性: Background属性是css中应用比较多,且比较重要的一个属性,它是负责给盒子设置背景图上和背景颜色的,background是一个复合属性,它可以分解成如下几个设置项: ...

  8. Win10 取消百度输入法 Shift+Space 全角半角切换

    问题描述 在百度输入法中,按下shift+空格,会自动进行全角与半角切换,这会导致在敲代码时 写着写着就出现以下情况: #include <iostream> using namespac ...

  9. 结束拒绝访问的进程 cmd下结束进程 强行结束进程 1

    结束拒绝访问的进程 有些病毒和恶意进程我们在任务管理器里面是不能结束的,这个时候,如果又没有工具,就很麻烦了,今天看网管员世界,提到了一种方法,能够解决: 根本的思想是用system的权限来运行tas ...

最新文章

  1. CIPS青工委学术沙龙总结:推荐系统前沿进展丨附回放和课件下载
  2. 天地图专题三:根据标注点的范围确定天地图的中心点和缩放级别
  3. seaborn 画堆叠柱状图_Seaborn-基于matplotlib的更强力制图库
  4. ubuntu mysql emma_ubuntumysql客户端emma中文乱码问题解决_MySQL
  5. python天天向上的力量 B
  6. 3ds max 渲染清晰面片的边缘
  7. java akka_AKKA文档(java版)——什么是AKKA?
  8. 关于各种地图(百度、高德等等)的坐标类型以及相互转换
  9. android调用python模块 chaquo_小猿圈python学习-系统调用os模块
  10. 计算机网络技术的专业认识,计算机网络技术课程学习后的自我认识
  11. C++中常量指针,指针常量(const 和*)的使用方法和理解方法
  12. java形式参数分别是基本类型和引用类型的调用
  13. 联网时浏览器跳出MSN中国
  14. 学习Globle和window对象学习心得+jquery中的$(#id)与document.getElementById(id)的区别+成功激活win10的方法
  15. 01 WIFI ----- SDIO接口驱动
  16. C4认证Java基础Excel练习题
  17. 多重重要性采样(MIS)与光线追踪技术
  18. [BZOJ4200][NOI2015]小园丁与老司机
  19. ldc服务器销售,ldc云服务器源码
  20. Aspose.Words for .NET使用章节教程(2):如何处理文档分段——Aspose.Words中的分段

热门文章

  1. css 相对定位 position relative
  2. 数学物理方程学习笔记5
  3. JPA和MyBatis的优缺点对比,你是不是都不知道有哪些?
  4. 时隔半年依旧是旗舰,这款骁龙820手机直降600再次开售
  5. background 立体空间背景节点
  6. 如何将QQ邮箱添加到Mac自带的邮箱(太难了)
  7. matlab 三维数据点拟合二次曲面,数学建模~由点云数据指出二次曲面拟合方程
  8. bsdiff差分算法
  9. 让你迅速实现增值的目标管理法:只管去做
  10. 请对号入座,不会给洗地机电瓶充电的看这里