zoukankan      html  css  js  c++  java
  • qt-QVariant-共用体

    需要  #include<QVariant>
    QVariant 类用于封装数据成员的类型及取值等信息,该类类似于 C++共用体 union,一个QVariant 对象,一次只能保存一个单一类型的值。该类封装了 Qt 中常用的类型,对于QVariant 不支持的类型 ( 比如用户自定义类型 ) ,则需要使用Q_DECLARE_METATYPE( Type )宏进行注册
    QVariant 拥有常用类型的单形参构造函数,因此可把这些常用类型转换为 QVariant 类型,同时 QVariant 还重载了赋值运算符,因此可把常用类型的值直接赋给 QVariant 对象。注:由 C++语法可知,单形参构造函数可进行类型转换
    注意:QVariant 没有 char 类型的构造函数,若使用 char 值会被转换为对应的 int 型
     
    QVariant v(1); //调用 QVariant(int )构造函数创建一个 QVariant 类型的对象,并把数值 1 保存到 v 中
        //QVariant(int, 1)
        v=2.2; //调用 QVariant 的赋值运算符,把值 2 保存在 v 之中,因为 QVariant 是类似于共用体的类,因此同一时间只会保存一个值
        //QVariant(double, 2.2)
        QString str=v.typeName();  //返回v中保存数据的类型
        //"double"
        v='a';  //QVariant 没有专门的char构造函数,此处的字符a会被转换为 int 型,因此 v中存储的是数值 97,而不是字符 a
        //QVariant(int, 97)
        int n=v.value<int>();  //以int类型返回v中的值
        char ch=v.value<char>();  //以char类型返回v中的值
        //a
        QChar chh=v.toChar(); //以QChar类型返回v中的值
        //a
        str=v.toString(); //把v中的数据转化为QString字符串后返回
        //97
    
        str=v.typeToName(v.type()); //type()返回存储值的枚举形式表示的类型,typeToName()把它转化为QString字符串
        //"int"
    
        v.setValue('b');  //设置值
        //QVariant(char, b)
        //若是使用 QVariant 构造函数和直接赋值 char 型字符,此处会输出 int,这是 setValue 与他们的区别
        //通过setValue能保留数据的原类型
    
    
    
        qDebug()<<v;
        qDebug()<<str;

  • 相关阅读:
    2017年苹果开发者账号申请——注册苹果账号
    2017年苹果开发者账号申请——公司邓白氏编码申请
    iOS开发-APP测试基本流程
    正则表达式入门教程
    iOS动画
    地图定位CoreLocation框架,地理位置编码与反编码
    第三方库FMDB的使用
    地图 大头针
    地图定位
    iOS应用内跳转系统设置相关界面的方法
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13695531.html
Copyright © 2011-2022 走看看