• 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;

  • 相关阅读:
    jquery easy ui 简单字段选择搜索实现
    (转)EasyUI 分页总结
    EasyUI 搜索框
    微信公众号开发简单介绍
    【POJ3740】Easy Finding DLX(Dancing Links)精确覆盖问题
    推断View是否显示在界面上
    菜鸟调错(八)—— Maven编译错误:不兼容的类型的解决方式
    js对table操作(添加删除交换上下TR)
    NBUT 1222 English Game(trie树+DP)
    Android 返回键的处理
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13695531.html
Copyright © 2020-2023  润新知