Qt学习 QVariant类(转)

摘要:
QVariant类是Qt数据类型最常见的并集。QVariant对象一次只保留一种类型的值。QVariant还支持空值。您可以定义没有任何值的类型。但是,请注意,QVariant类型只有在有值时才能强制转换。QVariantx,y,z;x、 转换;//十、 isNull()==true//y。isNul()==true,z.isNull(()==false因为QVariant是QtCore库的一部分,它不能提供QtGui中定义的类型的转换,例如QColor、QImage、heQPixmap等。相反,您可以使用两个模板函数:QVariant::value()或qVariantValue()。QVariantvariant;。。。QColorcolor=变量值();反向转换是自动的。

QVariant类作为一个最为普遍的Qt数据类型的联合。

因为c++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用。(联合体当中的变量共用一个存储区),没有了联合变量,我们在物体属性以及数据库的工作等方面受到很多的困扰。

一个QVariant对象在一个时间内只保留一种类型的值。我们可以使用canConvert来查询是否能够转换当前的类型。转换类型一般以toT()命名。

摘录了一个example来说明QVariant的使用方法:


QDataStream out(...);
 QVariant v(123);                // The variant now contains an int
 int x = v.toInt();              // x = 123
 out << v;                       // Writes a type tag and an int to out
 v = QVariant("hello");          // The variant now contains a QByteArray
 v = QVariant(tr("hello"));      // The variant now contains a QString
 int y = v.toInt();              // y = 0 since v cannot be converted to an int
 QString s = v.toString();       // s = tr("hello")  (see QObject::tr())
 out << v;                       // Writes a type tag and a QString to out
 ...
 QDataStream in(...);            // (opening the previously written stream)
 in >> v;                        // Reads an Int variant
 int z = v.toInt();              // z = 123
 qDebug("Type is %s",            // prints "Type is int"
         v.typeName());
 v = v.toInt() + 100;            // The variant now hold the value 223
 v = QVariant(QStringList());你甚至可以存储QList<QVariant>和QMap<QString ,QVariant>.所以你可以构造任意复杂的任意的数据类型。这个是非常强大而且又有用的。QVariant也支持null值,你可以定义一个 没有任何值的类型,然而,也要注意QVariant类型只能在他们有值的时候被强制转换。QVariant x, y(QString()), z(QString(""));
 x.convert(QVariant::Int);
 // x.isNull() == true
 // y.isNull() == true, z.isNull() == false
因 为QVariant是QtCore库的一部分,它不能够提供定义在QtGui当中的类型的转换,如QColor,QImage,he QPixmap等。换句话说,没有toColor()这样的函数。取代的,你可以使用QVariant::value()或者 qVariantValue()这两个模板函数。 QVariant variant;
 ...
 QColor color = variant.value<QColor>();
反向转换(如把QColor转成QVariant)是自动完成的。也包含了GUI相关的那些数据类型。
QColor color=palette().background().color();
QVariant variant=color;

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/madao123/archive/2010/10/13/5938654.aspx

免责声明:文章转载自《Qt学习 QVariant类(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇arttemplate.js简洁写法案例ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

qt嵌入式html和本地c++通信方式

前沿:我们在做qt项目的时候,通常会把某个html网页直接显示到应用程序中。比如绘图。直接把html形式的图标嵌入到应用程序中 但是我们需要把数据从后台c++端传到html端,实现显示。qt实现了相关的方法 程序运行截图 一。先看客户端js代码     <script type="text/javascript" src="http://t.zou...

[转]Qt 之 QFileSystemWatcher

简述QFileSystemWatcher类用于提供监视文件和目录修改的接口。QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件和目录的变更。调用addPath()函数可以监控一个特定的文件或目录。如果需要监控多个路径,可以使用addPaths()。通过使用removePath()和removePaths()函数来移除现有路径。Q...

QT在linux下获取网络类型

开发中遇到这样一个需求,需要判断当前网络的类型(wifi或者4G或者网线),在这里给大家一块分享下: 1、这里有一个linux指令:nmcli(大家自行百度即可) 2、nmcli device status 这个指令就会打印出你想要的东西 3、如何用QT去调取这个指令获取结果来进行上报呢?来一段代码吧 //执行linux指令获取返回结果 QString...

ubuntu16.4下使用QT修改系统时间

我也是在网上找的,自己随便改了一下六个lineEdit控件,每个控件输入日期时间,点击按钮触发函数可修改时间。 1 //一键修改系统时间 2 QString year = ui->lineEdit_9->text(); //年 3 QString month = ui->lineEdit_10->tex...

Qt调试信息重定向输出(qInstallMessageHandler)

由于工具需要,做了一小段Qt5测试代码,参考了网友的案例测试了以下功能 1 qDebug()重定向输出QT窗口 2 qDebug()信息保存到本地文件 QtMessageHandler qInstallMessageHandler(QtMessageHandler handler)   此函数在使用Qt消息处理程序之前已定义。返回一个指向前一个消息处理程序...

Qt编写地图综合应用12-路线查询

一、前言 路线查询的功能只有在线地图才有,因为这个路线规划需要经常更新的,这个数据同步需要大量的人力物力去统计,所以这玩意必须放在服务器端,就算是类似于手机端一样的放在本地离线,也需要隔一段时间更新的,不然数据很可能不正确。路线查询也叫出行规划,基本上分成两大类,一种是开车的一种是不开车的,其中开车的又有多种策略供选择比如最少时间、最短距离、避开高速等,不...