QVariant类
QVariant类:
#include "widget.h"
#include <QApplication>
#include <QDebug> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QVariant v();
qDebug()<<v.toInt(); QVariant w("How are you! ");
qDebug()<<w.toString(); QMap<QString,QVariant>map; map["int"]=;
map["double"]=709.709;
map["string"]="How are you! "; QColor c = QColor(,,);
map["color"]=(c); qDebug()<<map["int"]<< map["int"].toInt();
qDebug()<<map["double"]<< map["double"].toDouble();
qDebug()<<map["string"]<< map["string"].toString(); qDebug()<<map["color"]<< map["color"].value<QColor>();
/*
* map["color"]是一个QVariant对象,QVariant中没有提供转换QColor对象的方法
* 但是提供了 value模板方法来取得存放的任意类型数据:
* inline T value() const
* 也就是说 value是一个统用的方法(都叫模板了...)
* qDebug()<<map["int"]<< map["int"].toInt(); 等效于:
* qDebug()<<map["int"]<< map["int"].value<int>();
* 既然有了value方法了,为什么还要定义toInt方法? 猜想原因:
* 1、效率,可能toInt方法更加高效取得数据。
* 2、统一,其他类都有toInt方法,这里没有的话,有点不好意思吧
*/ QStringList sl; //定义字符串列表
/*
* class QStringList : public QList<QString>
*/
sl<<"A"<<"B"<<"C"<<"D"; QVariant slv(sl);//slv中存放的是字符串列表 if(slv.type()==QVariant::StringList)
{
QStringList list=slv.toStringList(); //取出QVariant对象中的数据——字符串列表
for(int i=;i<list.size();++i)
qDebug()<<list.at(i); //列表中的项
} return ;
}
QVariant类的更多相关文章
- QVariant类学习(非常强大的类型,甚至能处理QMap<QString ,QVariant>)
详细描述: QVariant类作为一个最为普遍的Qt数据类型的联合. 因为c++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用.(联合体当中的变量共用一个存储区),没有了联 ...
- Qt的QVariant类
QStandardItemModel类中的函数 bool setData(const QModelIndex &index, const QVariant &value, int ro ...
- QVariant类及QVariant与自定义数据类型转换的方法
这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是int,也可以是一个颜色值 ...
- QVariant实质 (类似 C#中的装箱拆箱)
QVariant是一种可以存储不同类型的数据结构,在很多场合这是很有用得为了达到这种目的,可以想象,该对象应该存储对象的类型信息,数据信息以及其他辅助详细考虑用途,这种对象必须支持对不同对象的存储,对 ...
- QVariant(相当于是Java里面的Object,起到一个数据类型“擦除”的作用,可以使用Q_DECLARE_METATYPE进行注册)
=QVariant= [%这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是 ...
- python列表和QVariant
pyqt中.要给QAbstractTableModel的setData函数传递一个list參数: [20,'00:00:19'] 涉及到QVariant和list的转换. 能够使用QVariant类中 ...
- Chapter2:Qt5模板库,工具类及控件
2.1 字符串类 QString类保存16位Unicode值,提供了丰富的操作,查询和转换等函数. (1):QString提供了一个二元的"+"操作符用于组合两个字符串 (2) ...
- QVariant(相当于是Java里面的Object,是万能的容器,但要注册)
这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是int,也可以是一个颜色值 ...
- 自定义数据类型使用QVariant转换的方法
QVariant类型的放入和取出必须是相对应的,你放入一个int就必须按int取出,不能用toString(), Qt不会帮你自动转换. 数据核心无非就是一个 union,和一个标记类型的type:传 ...
随机推荐
- numpy学习笔记(四)
(1)NumPy - 矩阵库 NumPy 包包含一个 Matrix库numpy.matlib.此模块的函数返回矩阵而不是返回ndarray对象. matlib.empty()返回一个新矩阵,而不初始化 ...
- redis-cli显示中文
在启动redis-cli时在其后面加上--raw参数即可启动后 再显示就正常了
- Javascript面向对象编程(一)
什么是面向对象? 它是一种新的编程模式.以往的面向过程是将功能都写在一起,逐行实现.面向对象与其不同,它只关心对象提供的功能,而不在乎细节. 面向对象的特点? 抽象:抓住问题的核心,贯穿始终: 封装: ...
- GC roots
1.虚拟机栈(本地变量表)引用的对象 2.方法区静态属性引用的对象 3.方法区常量引用的对象 4.本地方法栈JNI(一般指naive方法)中引用的对象 常说的GC(Garbage Collecto ...
- hdfs webhdfs 写文件(create file)
# _*_ coding=utf-8 _*_ import sys import os hosts = {} cmd1 = ''' curl -i -X PUT "http://%s:500 ...
- python-Djando项目搭建
1.创建一个项目目录“C:\python项目\project2”. 2.打开CMD 进入该项目目录 cd C:\python项目\project2 3.执行 django-admin startpro ...
- 7款不错的 CI/CD工具
时至今日,越来越多的工程团队开始实行敏捷开发,借以推动更短.更快的发布周期.而代码库的增长与更高的生产构建频率,也带动持续集成与持续部署/交付工具快速兴起.如果您有意提升发布频率,或者是不太清楚哪些工 ...
- java面试题复习(六)
51.实现多线程的方法 一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如 ...
- 整合MVC实现文件上传
1.整合MVC实现文件上传整合MVC实现文件上传在实际的开发中在实现文件上传的同时肯定还有其他信息需要保存到数据库,文件上传完毕之后需要将提交的基本信息插入数据库,那么我们来实现这个操作.整个MVC实 ...
- JS防抖与节流函数封装
防抖 在监听scroll事件的时候经常会用到防抖,当滚动到某一位置而触发状态,从而不会出现频繁滚动持续触发事件的情况 防抖的事件处理机制仅触发一次且必须是结束状态下才会执行 function debo ...