1.2 Qt常用基础类型
1. 基础类型因为Qt是一个C框架, 因此C中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数据类型。QT基本数据类型定义在#include QtGlobal 中QT基本数据类型有类型名称注释备注qint8signed char有符号 8 位数据qint16signed short16 位数据类型qint32signed int32 位有符号数据类型qint64long long int 或 (__int64)64 位有符号数据类型Windows 中定义为__int64qintptrqint32 或 qint64指针类型 根据系统类型不同而不同32 位系统为 qint32、64 位系统为 qint64qlonglonglong long int 或 (unsigned __int64)Windows 中定义为__int64qptrdiffqint32 或 qint64根据系统类型不同而不同32 位系统为 qint32、64 位系统为 qint64qrealdouble 或 float除非配置了 - qreal float 选项否则默认为 doublequint8unsigned char无符号 8 位数据类型quint16unsigned short无符号 16 位数据类型quint32unsigned int无符号 32 位数据类型quint64unsigned long long int 或 (unsigned __int64)无符号 64 比特数据类型Windows 中定义为 unsigned __int64quintptrqint32 或 qint64根据系统类型不同而不同32 位系统为 quint32、64 位系统为 quint64qulonglongunsigned long long int 或 (unsigned __int64)Windows 中定义为__int64ucharunsigned char无符号字符类型uintunsigned int无符号整型ulongunsigned long无符号长整型ushortunsigned short无符号短整型2. log输出 在Qt中进行log输出, 一般不使用c中的printf, 也不是使用C中的cout, Qt框架提供了专门用于日志输出的类, 头文件名为 QDebug, 使用方法如下:// 包含了QDebug头文件, 直接通过全局函数 qDebug() 就可以进行日志输出了 qDebug() Date: QDate::currentDate(); qDebug() Types: QString(String) QChar(x) QRect(0, 10, 50, 40); qDebug() Custom coordinate type: coordinate; // 和全局函数 qDebug() 类似的日志函数还有: qWarning(), qInfo(), qCritical() int number 666; float i 11.11; qWarning() Number: number Other value: i; qInfo() Number: number Other value: i; qCritical() Number: number Other value: i;3. 字符串类型c char* c std::string Qt QByteArray, QString3.1 QByteArray在Qt中QByteArray可以看做是c语言中 char*的升级版本。我们在使用这种类型的时候可通过这个类的构造函数申请一块动态内存用于存储我们需要处理的字符串数据。下面给大家介绍一下这个类中常用的一些API函数大家要养成遇到问题主动查询帮助文档的好习惯。构造函数// 构造空对象, 里边没有数据 QByteArray::QByteArray(); // 将data中的size个字符进行构造, 得到一个字节数组对象 // 如果 size-1 函数内部自动计算字符串长度, 计算方式为: strlen(data) QByteArray::QByteArray(const char *data, int size -1); // 构造一个长度为size个字节, 并且每个字节值都为ch的字节数组 QByteArray::QByteArray(int size, char ch); QByteArray :: QByteArray ( ) ↑ ↑ ↑ 类名 构造函数名 参数列表这段代码展示的是Qt 中QByteArray类的三种构造函数。QByteArray是 Qt 提供的字节数组容器用于存储原始二进制数据或文本数据以char为单位。它的主要特点是比std::string更适合处理二进制数据和与 Qt 的网络、IO 类交互。数据操作// 在尾部追加数据 // 其他重载的同名函数可参考Qt帮助文档, 此处略 QByteArray QByteArray::append(const QByteArray ba); void QByteArray::push_back(const QByteArray other); // 头部添加数据 // 其他重载的同名函数可参考Qt帮助文档, 此处略 QByteArray QByteArray::prepend(const QByteArray ba); void QByteArray::push_front(const QByteArray other); // 插入数据, 将ba插入到数组第 i 个字节的位置(从0开始) // 其他重载的同名函数可参考Qt帮助文档, 此处略 QByteArray QByteArray::insert(int i, const QByteArray ba); // 删除数据 // 从大字符串中删除len个字符, 从第pos个字符的位置开始删除 QByteArray QByteArray::remove(int pos, int len); // 从字符数组的尾部删除 n 个字节 void QByteArray::chop(int n); // 从字节数组的 pos 位置将数组截断 (前边部分留下, 后边部分被删除) void QByteArray::truncate(int pos); // 将对象中的数据清空, 使其为null void QByteArray::clear(); // 字符串替换 // 将字节数组中的 子字符串 before 替换为 after // 其他重载的同名函数可参考Qt帮助文档, 此处略 QByteArray QByteArray::replace(const QByteArray before, const QByteArray after);