您的位置 首页 设计

我的QT5学习之路(三)――模板库、东西类和控件(中)

一、前言前面我们了解了关于Qt字符串的一些简单操作,容器类的分类和各自的主要特点以及用途,这一次我们了解一些常见的工具类和常见的控件。二、

一、前语

  前面咱们了解了关于Qt字符串的一些简略操作,容器类的分类和各自的主要特点以及用处,这一次咱们了解一些常见的东西类和常见的控件。

二、QByteArry和QVariant

2.1  QByteArry

 关于QByteArry,咱们在上篇中从前看到过。QByteArry和QString的功用和API根本类似,具有许多类似的函数。不同的当地在于QByteArry能够存储原生的二进制数据和8位编码的文本数据,那么何为原生的二进制数据和8为编码的文本数据呢?略微了解计算机原理的童鞋或许都知道,计算机内部一切的数据都是以0和1的方式进行存储的,这种存储方式便是二进制。关于这些二进制代码,计算机并不知道其详细的意义,需求经过上下文进行决议。关于文件而言,即使是一个文本文件,读出时也能够依照二进制的方式读出,这便是二进制格局。如果把这些二进制中的0和1依照编码解说成一个个的字符,就能够构成一个文本了。因而,QByteArry实际上朐生的二进制,也能够看作是文本,具有文本的一些操作。可是关于文本字符流的操作,仍是主张运用QString而不是QByteArry,由于QString支撑Unicode。

  出于便利,QByteArry主动的确保最终一个字节之后的那位的值是“\0”,这样也导致QByteArry能够简单的转变为const char*,相同作为存储二进制的数据类型,QByteArry中心也能够存储“\0”。

2.2 QVariant

  有时候咱们期望将不同类型的数据存储在一个变量中,如果是在Java中能够经过Object类型的变量完成,可是C++中没有这种公有承继的类。Qt经过声明一个类,这个类包含一切需求存储的数据类型,这便是QVariant类。

  QVariant类能够保存许多Qt的数据类型,包含QBrush、QColor、QCursor、QDataTime、QFont、QKeySequence、QPalette、QPen、QPixmap、QPoint、QRect、QRegion、QSize和QString,而且还包含根本类型,int、float等等。

  Qvariant还能够保存许多的调集类型,如QMapQString,QVariant>,QStringList和QListQVariant>。其间item view classes,数据库模块和QSettings都很多运用了QVariant类,便利读写数据。

  QVariant支撑嵌套存储。

 1 QMapQString,QVariant>map;  2 map[int]=123;  3 map[double]=1.23;  4 map[string]=123;  5 map[color]=QColor(255,0,0);  6 qDebug()map[int]map[int].toInt();  7 qDebug()map[double]map[double].toDouble();  8 qDebug()map[string]map[string].toString();  9 //运用valueT>()模版函数,获取存储在QVariant中的数据10 qDebug()map[color]map[color].valueQColro>();

  咱们也能够自定义QVariant,被QVariant存储的数据类型有必要有一个默许的结构函数和一个复制结构函数,一起首要有必要运用Q_DECLARE_METATYPE()宏。一般会将这个宏放在类的声明地点头文件的下面。

1 Q_DECLARE_METATYPE(human) 

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/149989.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部