当前位置: 首页 > news >正文

Qt中的基础数据类型

1.基础类型

        因为Qt是一个C++ 框架, 因此C++中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数类型

        QT基本数据类型定义在#include <QtGlobal> 中,QT基本数据类型有:

类型名称注释备注
qint8signed char有符号8位数据
qint16signed short16位数据类型
qint32signed int32位有符号数据类型
qint64long long int 或(__int64)64位有符号数据类型,Windows中定义为__int64
qintptrqint32 或 qint64指针类型 根据系统类型不同而不同,32位系统为qint32、64位系统为qint64
qlonglong  long long int 或(__int64)Windows中定义为__int64
qptrdiffqint32 或 qint64根据系统类型不同而不同,32位系统为qint32、64位系统为qint64
qrealdouble 或 float除非配置了-qreal float选项,否则默认为double
quint8unsigned char无符号8位数据类型
quint16unsigned short无符号16位数据类型
quint32    unsigned int无符号32位数据类型
quint64    unsigned long long int 或 (unsigned __int64)    无符号64比特数据类型,Windows中定义为unsigned __int64
quintptr   quint32 或 quint64    根据系统类型不同而不同,32位系统为quint32、64位系统为quint64
qulonglong   unsigned long long int 或 (unsigned __int64)   Windows中定义为__int64
uchar       unsigned char    无符号字符类型
 
uint   unsigned int 无符号整型
ulong   unsigned long    无符号长整型
 
ushort    unsigned short   无符号短整型

2.log输出

2.1 在调试窗口中输入日志

        在Qt中进行log输出, 一般不使用c中的printf, 也不是使用C++中的cout, Qt框架提供了专门用于日志输出的类, 头文件名为 QDebug, 使用方法如下:

 创建一个新项目:添加头文件#include <QDebug> 

        qDebug() << "I'm rich" << "*" << 100000000;

运行结果:会在窗口下面应用程序输出下输出我们输入的数据:

2.2 在终端窗口中输出日志

如果想要数据在调试窗口中输出:

(1)点开.pro文件:在CONFIG += c++17 后面添加 console

 (2)点击项目右键选择重新构造

(3)在Windows上再次编译就会出现一个调试窗口了, MacOS没有调试窗口。

3.字符串类型

        在Qt中不仅支持C, C++中的字符串类型, 而且还在框架中定义了专属的字符串类型, 我们必须要掌握在Qt中关于这些类型的使用和相互之间的转换

语言类型字符串类型
Cchar *
C++std::string 、char *
QtQByteArray, QString 等

3.1 QByteArray

        在Qt中QByteArray可以看做是c语言中 char*的升级版本。我们在使用这种类型的时候可通过这个类的构造函数申请一块动态内存,用于存储我们需要处理的字符串数据

QByteArray构造函数:

// 构造空对象, 里边没有数据
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数据操作:

// 在尾部追加数据
// 其他重载的同名函数可参考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);

 QByteArray子字符串查找和判断:

// 判断字节数组中是否包含子字符串 ba, 包含返回true, 否则返回false
bool QByteArray::contains(const QByteArray &ba) const;
bool QByteArray::contains(const char *ba) const;
 

// 判断字节数组中是否包含子字符 ch, 包含返回true, 否则返回false
bool QByteArray::contains(char ch) const;

// 判断字节数组是否以字符串 ba 开始, 是返回true, 不是返回false
bool QByteArray::startsWith(const QByteArray &ba) const;
bool QByteArray::startsWith(const char *ba) const;
 

// 判断字节数组是否以字符 ch 开始, 是返回true, 不是返回false
bool QByteArray::startsWith(char ch) const;

// 判断字节数组是否以字符串 ba 结尾, 是返回true, 不是返回false
bool QByteArray::endsWith(const QByteArray &ba) const;
bool QByteArray::endsWith(const char *ba) const;
 

// 判断字节数组是否以字符 ch 结尾, 是返回true, 不是返回false
bool QByteArray::endsWith(char ch) const;

QByteArray遍历:

// 使用迭代器
iterator QByteArray::begin();
iterator QByteArray::end();

// 使用数组的方式进行遍历
// i的取值范围 0 <= i < size()

char QByteArray::at(int i) const;
char QByteArray::operator[](int i) const;

QByteArray查看字节数:

// 返回字节数组对象中字符的个数
int QByteArray::length() const;
int QByteArray::size() const;

http://www.lryc.cn/news/183670.html

相关文章:

  • 2023阿里云域名优惠口令大全
  • 湖南软件测评公司简析:软件功能测试和非功能测试的联系和区别
  • HuggingFace Transformers教程(1)--使用AutoClass加载预训练实例
  • Qt获取当前所用的Qt版本、编译器、位数等信息
  • 《C和指针》笔记31:多维数组的数组名、指向多维数组的指针、作为函数参数的多维数组
  • 【伪彩色图像处理】将灰度图像转换为彩色图像研究(Matlab代码实现)
  • Go Gin Gorm Casbin权限管理实现 - 2. 使用Gorm存储Casbin权限配置以及`增删改查`
  • DNDC模型的温室气体排放分析
  • vue、全局前置守卫
  • OpenWRT、Yocto 、Buildroot和Ubuntu有什么区别
  • 数据挖掘(3)特征化
  • 【RabbitMQ 实战】08 集群原理剖析
  • 2023年 2月3月 工作经历
  • selenium京东商城爬取
  • 用pandas处理数据时,使变量能够在不同的Notebook会话页面进行传递,魔法命令%store
  • 选择适合户外篷房企业的企业云盘解决方案
  • 松鼠搜索算法(SSA)(含MATLAB代码)
  • 折半+dp之限制转状态+状压:CF1767E
  • 如何写出优质代码
  • ChatGLM2-6B的通透解析:从FlashAttention、Multi-Query Attention到GLM2的微调、源码解读
  • 3D人脸生成的论文
  • 解决问题:可以用什么方式实现自动化部署
  • 【数据结构】链表栈
  • Android笔记:Android 组件化方案探索与思考
  • MeterSphere v2.10.X-lts 双节点HA部署方案
  • Java进阶篇--网络编程
  • PyTorch入门之【CNN】
  • 马斯洛需求层次模型之安全需求之云安全浅谈
  • Pikachu靶场——远程命令执行漏洞(RCE)
  • 【WSN】无线传感器网络 X-Y 坐标到图形视图和位字符串前缀嵌入方法研究(Matlab代码实现)