QT系列第4节 QT包含模块以及常用的数据类型和容器

news2024/9/29 9:37:54

QT中包含很多模块,这些模块都是建立在常用数据类型和容器基础之上的。本篇简单介绍一下常用模块,常用数据类型,常用容器类。

目录

1.QT模块分类

2.QT基本数据类型

3.QString和QByteArray区别

4.QT中的容器


1.QT模块分类

(1)Qt模块主要分为以下

 (2)Qt基本模块

 

 (3)Qt附加模块

 

(4)Qt增值模块

 

 (5)Qt技术预览模块

 (6)Qt工具模块

2.QT基本数据类型

3.QString和QByteArray区别

(1)各种类型字符串

(2)QByteArray与QString 

QByteArray 是 c 语言中 char* 的升级版本。

构造方法:

// 构造空对象, 里边没有数据
QByteArray::QByteArray();
// 将data中的size个字符进行构造, 得到一个字节数组对象
// 如果 size==-1 函数内部自动计算字符串长度, 计算方式为: strlen(data)
QByteArray::QByteArray(const char *data, int size = -1);
// 构造一个长度为size个字节, 并且每个字节值都为ch的字节数组
QByteArray::QByteArray(int size, char ch);

QString 也是封装了字符串,但是内部的编码为 utf8, UTF-8 属于 Unicode 字符集,它固定使用多个字节(window为2字节, linux为3字节)来表示一个字符。构造方法:

// 构造一个空字符串对象
QString::QString();
// 将 char* 字符串 转换为 QString 类型
QString::QString(const char *str);
// 将 QByteArray 转换为 QString 类型
QString::QString(const QByteArray &ba);

从QString构造函数可以看出QString是对QByteArray的封装。可以通过构造函数直接从QByteArray来构造QS同日那个

QString转QByteArray一般使用如下方法:

QByteArray QString::toUtf8() const;

(3)QString数值类型处理

    QString str = "101010";
    //以二进制字符串方式读入
    qDebug() << QString::number(str.toInt(nullptr, 2));
    str = "0FF";
    qDebug() << QString::number(str.toInt(nullptr, 16));

    //浮点数保留两位有效数字,三种写法均可以
    qDebug() << QString::number(123.234, 'f', 2);
    qDebug() << QString::asprintf("%.2f", 123.234);
    qDebug() << str.setNum(123.234, 'f', 2);

    //转为二进制字符串
    qDebug() << str.setNum(110, 2);
    //转为十六进制字符串
    qDebug() << str.setNum(110, 16);

运行结果:

 

4.QT中的容器

4.1容器分类

4.2 Java类型迭代器

 4.3 STL类型迭代器

 

 代码举例:

    //顺序容器使用
    //遍历
    // 正向遍历
    QList<QString> strList;
    strList << "不知道" << "nihao" << "hello" << "abc" << "123";
    QListIterator<QString> i(strList);
    while (i.hasNext()) {
        qDebug() << i.next(); //返回数据,并跳过一项
    }

    // 反向遍历
    i.toBack();
    while (i.hasPrevious()) {
        qDebug() << i.previous();
    }

    // 修改
    QList<int> iList;
    iList << 111 << 2 << 333 << 4 << 5;
    QMutableListIterator<int> mi(iList);
    while (mi.hasNext()) {
        if (0 == mi.next() % 2) {
            mi.remove();
        }
    }
    mi.toFront();
    while (mi.hasNext()) {
        qDebug() << mi.next();
    }

    //关联容器使用
    QMap<QString, QString> strMap;
    strMap.insert("Beijing", "China");
    strMap.insert("Paris", "France");
    strMap.insert("New York", "USA");
    strMap.insert("Mexico", "USA");
    strMap.insert("Moscow", "Russia");

    QMutableMapIterator<QString, QString> mapI(strMap);
    while (mapI.hasNext()) {
        if (mapI.next()->endsWith("York")) {
            mapI.remove();
        }
    }

    mapI.toFront();
    while (mapI.hasNext()) {
        auto item = mapI.next();
        qDebug() << item.key() << " " << item.value();
    }

    strList.clear();
    strList << "A" << "B" << "C";
    QList<QString>::const_iterator ci;
    for(ci = strList.begin(); ci != strList.end(); ++ci) {
        qDebug() << *ci;
    }

    strMap.clear();
    strMap.insert("1", "111");
    strMap.insert("2", "222");
    strMap.insert("3", "333");
    strMap.insert("4", "444");
    QMap<QString, QString>::iterator iit;
    for(iit = strMap.begin(); iit != strMap.end(); ++iit) {
        qDebug() << iit.key() << " " << iit.value();
    }//顺序容器使用
    //遍历
    // 正向遍历
    QList<QString> strList;
    strList << "不知道" << "nihao" << "hello" << "abc" << "123";
    QListIterator<QString> i(strList);
    while (i.hasNext()) {
        qDebug() << i.next(); //返回数据,并跳过一项
    }

    // 反向遍历
    i.toBack();
    while (i.hasPrevious()) {
        qDebug() << i.previous();
    }

    // 修改
    QList<int> iList;
    iList << 111 << 2 << 333 << 4 << 5;
    QMutableListIterator<int> mi(iList);
    while (mi.hasNext()) {
        if (0 == mi.next() % 2) {
            mi.remove();
        }
    }
    mi.toFront();
    while (mi.hasNext()) {
        qDebug() << mi.next();
    }

    //关联容器使用
    QMap<QString, QString> strMap;
    strMap.insert("Beijing", "China");
    strMap.insert("Paris", "France");
    strMap.insert("New York", "USA");
    strMap.insert("Mexico", "USA");
    strMap.insert("Moscow", "Russia");

    QMutableMapIterator<QString, QString> mapI(strMap);
    while (mapI.hasNext()) {
        if (mapI.next()->endsWith("York")) {
            mapI.remove();
        }
    }

    mapI.toFront();
    while (mapI.hasNext()) {
        auto item = mapI.next();
        qDebug() << item.key() << " " << item.value();
    }

    strList.clear();
    strList << "A" << "B" << "C";
    QList<QString>::const_iterator ci;
    for(ci = strList.begin(); ci != strList.end(); ++ci) {
        qDebug() << *ci;
    }

    strMap.clear();
    strMap.insert("1", "111");
    strMap.insert("2", "222");
    strMap.insert("3", "333");
    strMap.insert("4", "444");
    QMap<QString, QString>::iterator iit;
    for(iit = strMap.begin(); iit != strMap.end(); ++iit) {
        qDebug() << iit.key() << " " << iit.value();
    }

运行效果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jdk11新特性——更简化的编译运行程序

目录一、概述二、注意事项三、注意事项1——代码示例3.1、示例13.2、示例23.3、示例3四、注意事项2——代码示例4.1、示例14.2、示例2一、概述 JEP 330 : 增强java启动器支持运行单个java源代码文件的程序。 在我们的认知里面&#xff0c;要运行一个 Java 源代码必须先编译&am…

CentOS 8:FTP服务器

FTP服务器 vsftpd , 是 CentOS 系统自带的 FTP 服务 其中&#xff0c;d 表示 daemon , 后台、守护进程的意思 FTP文件传递示意图&#xff1a; 检查 vsftpd 是否安装 ls /usr/sbin/vsftpd 安装vsftpd软件包 yum install vsftpd 其中&#xff0c;yum 是 CentOS 下的软件包…

低代码平台丨仪表盘实用技巧—【倒计时】

学生时代&#xff0c;我们经常能够看到所谓的中考倒计时、高考倒计时…… 这些白纸黑字的倒计时看板&#xff0c;不仅贯穿着我们的学生生涯。在步入职场之后&#xff0c;随之而来的项目倒计时、季度倒计时&#xff0c;年度倒计时……各种各样的倒计时看板&#xff0c;充斥着我…

卷积神经网络-基础篇Basic-CNN

卷积神经网络-基础篇Basic-CNN CNN的全称是"Convolutional Neural Network"(卷积神经网络)。而神经网络是一种模仿生物神经网络&#xff08;动物的中枢神经系统&#xff0c;特别是大脑&#xff09;结构和功能的数学模型或计算模型。 CNN原理 CNN被广泛应用在图像识…

Supervisor详解

是用Python开发的一个client/server服务&#xff0c;是Linux/Unix系统下的一个进程管理工具&#xff0c;不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程&#xff0c;当一个进程意外被杀死&#xff0c;supervisort监听到进程死…

蓝桥杯C/C++百校真题赛(1期)Day1题解(九进制转十进制、数字三角形)

Q1 进制转化 进制转化&#xff0c;口算啥的都行。 #include <iostream> using namespace std; int main() {cout << 2 2 * 9 2 * 9 * 9 * 9 << endl;return 0; }Q2 数字三角形 #include<iostream> using namespace std;const int N 110; int f[N][…

QT 项目 智能家居系统 上位机

有哪些文件 &#xff1a; 头文件&#xff1a; 1. auidio .h 语音识别 模块 2. camera.h 人脸识别登录模块 3. chooselevelscene.h 翻金币游戏的 4. dataconfig.h 翻金币游戏的 关卡 的数据 5.entry_mode.h 登录方式的界面类 6.luck_draw.h 开心一天的界面类 …

[附源码]Node.js计算机毕业设计公司办公自动化系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

CS61A Proj 4

更好的阅读体验 Project 4: Scheme Interpreter Eval calls apply, which just calls eval again! When does it all end? Introduction Note: If you’re interested in an alternate version of this project that gives you considerably less scaffolding and guidanc…

【大数据技术Hadoop+Spark】Spark架构、原理、优势、生态系统等讲解(图文解释)

一、Spark概述 Spark最初由美国加州伯克利大学&#xff08;UCBerkeley&#xff09;的AMP&#xff08;Algorithms&#xff0c; Machines and People&#xff09;实验室于2009年开发&#xff0c;是基于内存计算的大数据并行计算框架&#xff0c;可用于构建大型的、低延迟的数据分…

你评论,我赠书~【TFS-CLUB社区 第9期赠书活动】〖HTML5+CSS3+JavaScript从入门到精通(微课精编版)(第2版)〗等你来拿

文章目录❤️‍&#x1f525; 赠书活动 - 《Python从入门到精通&#xff08;微课精编版&#xff09;》❤️‍&#x1f525; 编辑推荐❤️‍&#x1f525; 抽奖方式与截止时间❤️‍&#x1f525; 赠书活动 → 获奖名单❤️‍&#x1f525; 赠书活动 - 《Python从入门到精通&…

详细复习云开发~小程序【云数据库、云函数】

文章目录一&#xff0c;云数据库1-1&#xff0c;在数据库里新建集合(数据表)1-2&#xff0c;数据库权限管理1-3&#xff0c;数据库的增删改查1-3-1&#xff0c;查询 get()1-3-2&#xff0c;条件查询 where()1-3-3&#xff0c;查询单条数据doc()1-3-4&#xff0c;添加数据 add()…

NC22 合并两个有序的数组 - java语言实现

文章目录1. 题目描述2. 题目解读3. 思路4. 代码实现总结✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来&#xff01; 编程真是一件很奇妙的东西。你只是浅尝辄止&#xff0c;那么只会觉得枯燥乏味&#xff0c;像对待任务似的应付它。但你如果深入探索&#xff0c;就会…

用 Python 将 html 转为 pdf、word

在日常中有时需将 html 文件转换为 pdf、word 文件。网上免费的大多数不支持多个文件转换的情况&#xff0c;而且在转换几个后就开始收费了。 转 pdf 转 pdf 中使用 pdfkit 库&#xff0c;它可以让 web 网页直接转为 pdf 文件&#xff0c;多个 url 可以合并成一个文件。 安装…

供应科研试剂Biotin-PEG-Thiol,Biotin-PEG-SH,生物素peg巯基

一&#xff1a;产品描述 1、名称 英文&#xff1a;Biotin-PEG-Thiol&#xff0c;Biotin-PEG-SH 中文&#xff1a;生物素-聚乙二醇-巯基 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Biotin PEG Thiol PEG 4、分子量&#xff1a;可定制&#xff0c;1k、2k、3.4k、1…

linux red hat 8.0 搭建httpd服务

简介&#xff1a; Apache HTTP Server&#xff08;简称Apache&#xff09;&#xff0c;是Apache软件基金会的一个开源的网页服务器&#xff0c;可以在大多数电脑操作系统中运行&#xff0c;由于其具有的跨平台性和安全性&#xff0c;被广泛使用&#xff0c;是最流行的Web服务器…

Altium Designer输出GERBER文件与华秋DFM对比

Altium Designer是原Protel软件开发商Altium公司推出的PCB设计软件。Altium Designer &#xff08;AD&#xff09;软件一款功能强大、界面友好、操作简单、易容上手等优点&#xff0c;&#xff0c;因此成为各电子工程师、PCB设计工程师、电子发烧友首选EDA设计工具。掌握AD软件…

【简单项目实战】用C++实现通讯录管理系统 | [普通实现]

目录 ●功能介绍 ●案例 ●代码展示 ●结果展示 ●功能介绍 用C设计一个程序&#xff0c;能够提供以下功能&#xff1a; 1.录入联系人的基本信息。包括姓名、性别、年龄、电话号和地址。 2.展示所有已录入联系人的基本信息。以姓名、性别、年龄、电话号和地址的方式按列…

链表的实际应用

1. 删除链表中等于给定值 val 的所有节点。 链接&#xff1a;203. 移除链表元素 - 力扣&#xff08;Leetcode&#xff09; 假设&#xff1a;我们有这么个链表&#xff1a; 我们需要删除所有date域为key的结点。 假设key为4&#xff1a; 思路&#xff08;快慢指针&#xff09…

54、反射(reflection)

一、入门 反射机制的重要性在于&#xff1a;通过外部文件配置&#xff0c;在不修改源码情况下来控制程序&#xff0c;也符合设计模式的ocp原则&#xff08;开闭原则&#xff1a;不修改源码&#xff0c;扩容功能&#xff09; package hspedu.reflection_question;import hsped…