QVariant 类的使用 2021-11-08

#include<QVariant>
#include <iostream>
using namespace std;
class C{}; //自定义类型
int main(int argc, char *argv[])
{
 QVariant v('a'); /*QVariant 没有专门的 char 构造函数,此处的字符 a 会被转换为 int 型,因此 v
                    中存储的是数值 97,而不是字符 a 。*/
 cout<<v.value<int>()<<endl; //输出 97
 cout<<v.value<char>()<<endl; //输出 a,将 97 转换为 char 型,并输出转换后的值。
 cout<<v.toChar().toLatin1()<<endl; /*输出 a,原因同上,注意 toChar 返回的类型是 QChar 而不
                                      是 char。*/
 cout<<v.toString().toStdString()<<endl; /*输出 97,把存储在 v 中的值转换为 QString,然后以                                    
                                          字符串形式输出。*/
 cout<<v.typeName()<<endl; //输出 int,可见存储在 v 中的值的类型为 int
 cout<<v.typeToName(v.type())<<endl; /*输出 int,其中 type 返回存储值的枚举形式表示的类型,而
                                      typeToName 则以字符串形式显示该枚举值所表示的类型。*/
 char c='b';
 v.setValue(c);
 cout<<v.toString().toStdString()<<endl; //输出 b
 cout<<v.typeName()<<endl; /*输出 char,若是使用 QVariant 构造函数和直接赋值 char 型字符,此
                             处会输出 int,这是 setValue 与他们的区别。*/
 C mc; //自定义类型 C 的对象 mc
 //QVariant v1(mc); //错误,没有相应的构造函数。
 QVariant v2;
 //v2=mc; //错误,没有与类型 C 匹配的赋值运算符函数。
 //v2.setValue(mc); //错误,自定义类型 C 未使用宏 Q_DECLARE_METATYPE 声明。
 return 0; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老赵的博客

叮咚,你的赏钱已到账,嘿嘿嘿

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值