《Qt 6 C++开发指南》简介
我们编写的新书《Qt 6 C++开发指南》在2月份终于正式发行销售了,这本书是对2018年5月出版的《Qt 5.9 C++开发指南》的重磅升级。以下是本书前言的部分内容,算是对《Qt 6 C++开发指南》的一个简介。

1.编写本书的目的
《Qt 5.9C++开发指南》是我写的第一本书,于2018年5月出版,至2022年7月已经31次印刷。这本书是比较成功的一本书,但是写这本书是一件无心插柳的事情,而且因为是我写的第一本书,其中或多或少还存在一些问题,例如有读者反映写得不够详细、缺少专门介绍事件处理的章节等。
2020年12月底,Qt 6.0正式发布。Qt 6是一个新的主版本,它对Qt的一些底层进行了重大革新,引入了新的图形架构、CMake构建系统和其他很多新特性。Qt6舍弃了Qt 5中的一些类和接口函数,同时新增了一些类和接口函数,一些模块被完全重新改写,例如Qt 6的多媒体模块与Qt 5的完全不兼容。
Qt 5.15是Qt 5的最后一个长期支持(long term supported,LTS)版本,Qt 6.0在2020年12月发布时并不包含Qt 5.15中的所有模块,在后续发布的版本中又陆续增加了一些模块。Qt 6.1在2021年5月发布,增加了Charts、Data Visualization等模块。Qt 6.2在2021年9月发布,增加了Multimedia、SerialPort等模块。Qt 6.2是Qt 6系列的第一个LTS版本,它补齐了Qt框架中的主要模块。
由于Qt 6与Qt 5存在较大差异,如果读者根据《Qt 5.9 C++开发指南》来学习Qt6 C++编程,难免会遇到各种问题。于是,在Qt 6.0发布时,我们就有了撰写《Qt6 C++开发指南》的计划。本书是基于Qt 6.2编写的,它是《Qt5.9 C++开发指南》的升级版本,但并不是对《Qt 5.9 C++开发指南》的简单文字修改和程序升级,而几乎是完全重新编写的。为了使内容更符合循序渐进的学习过程,全书的章节内容被重新编排,并增加了一些新的章节,内容也更为详细,目的是使本书成为大家学习Qt 6 C++编程的最佳选择。
2.本书内容概述
本书系统地介绍了使用Qt C++开发应用程序所涉及的技术原理和主要功能模块的使用方法。全书共18章,章节内容基本是按照循序渐进的学习顺序编排的。
第1章是对Qt的介绍,使初学者对Qt有总体的了解。
第2章介绍GUI程序设计的基础,包括GUI应用程序的基本结构和工作原理、界面可视化设计方法、图标等资源的使用、CMake构建系统等。通过第2章的内容就能够了解Qt C++开发GUI应用程序的基本方法,后续的学习就只是各种界面组件和功能模块的使用了。
第3章介绍Qt框架中的一些底层功能和类,特别是元对象系统。元对象系统是Qt的核心功能,包含信号与槽、属性系统、对象树等功能。深入理解元对象系统的功能和使用方法,可以更灵活地运用Qt的编程功能。
第4章介绍常用界面组件的使用,学会了这些组件的使用,就可以设计一般的GUI应用程序了。
第5章至第17章介绍GUI应用程序开发中常用的一些编程技术和功能模块的使用,包括模型/视图结构、事件处理、对话框和多窗口程序设计、文件读写等功能的编程方法,以及数据库、多线程、网络、多媒体、串口通信等功能模块的使用。读者可以根据自己的需要学习相应的章节。
第18章介绍了Qt中辅助GUI应用程序开发的一些技术和工具软件的使用,包括设计多语言界面的应用程序,使用Qt样式表设计自定义界面效果,发布Qt编写的应用程序并制作安装文件。
本书的内容几乎是全部重新编写的,即使是《Qt 5.9 C++开发指南》中已有的一些章节和示例,也重新整理了文字表述,对相关程序进行了优化。相对于《Qt 5.9 C++开发指南》,本书变动较大的内容如下:
新增了第6章,详细介绍事件处理的编程方法。
新增了第17章,介绍串口通信编程,这对于工控相关专业人员编写上位机程序是比较实用的。
第16章的内容是全新的,因为Qt 6的多媒体模块是全新的,与Qt 5的多媒体模块完全不兼容。
第10章中增加了图像处理的编程内容,介绍用QImage实现简单的图像处理,以及打印功能的编程实现方法。
第18章中增加了对Qt Install Framework软件的介绍,使用该软件可以为发布的Qt应用程序制作安装文件。
本书包含大量完整的示例项目,读者可以从人民邮电出版社异步社区下载本书所有示例的源代码。同时,为了便于读者查看示例的运行效果,以及避免因使用不同版本的Qt编译示例项目时可能出现错误,我们专门为本书示例编写了一个软件,将全书所有示例的可执行文件集成到这个软件里。通过运行此软件,读者可以浏览本书所有的示例,每个示例有简介和主要界面截图(如图0所示),双击一个示例节点就可以运行该示例的可执行文件。该软件用Qt6.2开发,使用Qt Install Framework制作了安装文件。

3.本书特点和使用约定
本书只介绍Qt C++编程,不涉及Qt支持的另一种语言QML的编程,也不涉及Qt for Python的编程,有关这些内容需要查看专门的书。Qt的内容范围非常广泛,本书只介绍了GUI应用程序设计中常用的一些技术和功能模块。读者通过学习本书的内容并掌握Qt C++开发GUI应用程序的方法后,就可以在实际开发中解决具体的问题,以及自学新的模块或类的使用。
本书包含大量示例项目,有些示例项目具有一定的难度,这也是本书的一大特点。学习编程需要动手实践,单纯看书是无法学会编程的。要想完全掌握本书的内容,将书中的示例自己编程实现一遍是最有效的方法。
本书不适合对C++语言零基础的读者阅读。读者需要基本掌握C++语言编程的基本原理并对类的概念和使用比较熟悉后,再学习本书的内容。
本书介绍GUI应用程序设计时,一般采用QtDesigner进行可视化界面设计,而不会采用纯代码方式设计用户界面,这是因为使用可视化方法设计用户界面效率更高,也更适合初级水平的编程者。当然,本书也介绍了创建界面和布局的代码的原理,读者了解这些原理后,就可以看懂以纯代码方式创建界面的程序。
Qt 6中引入了CMake构建系统,本书第2章会介绍CMake构建系统的基本用法。CMake功能强大,更适用于大型项目的管理。要完全掌握并灵活使用CMake比较难,因此本书的绝大部分示例仍使用qmake构建系统。
本书所有示例的开发环境和测试环境是Qt 6.2.3 MinGW 64-bit,Qt 6.2.3 MSVC2019 64bit,Qt Creator6.0.2,Windows 10。
相关文章:
《Qt 6 C++开发指南》简介
我们编写的新书《Qt 6 C开发指南》在2月份终于正式发行销售了,这本书是对2018年5月出版的《Qt 5.9 C开发指南》的重磅升级。以下是本书前言的部分内容,算是对《Qt 6 C开发指南》的一个简介。1.编写本书的目的《Qt 5.9C开发指南》是我写的第一…...
CleanMyMac是什么清理软件?及使用教程
你知道CleanMyMac是什么吗?它的字面意思为“清理我的Mac”,作为软件,那就是一款Mac清理工具,Mac OS X 系统下知名系统清理软件,是数以万计的Mac用户的选择。它可以流畅地与系统性能相结合,只需简单的步骤就…...
Linux小黑板(9):共享内存
"My poor lost soul"上章花了不少的篇幅讲了讲基于管道((匿名、命名))技术实现的进程间通信。进程为什么需要通信?目的是为了完成进程间的"协同",提高处理数据的能力、优化业务逻辑的实现等等,在linux中我们已经谈过了一个通信的大类…...
Detr源码解读(mmdetection)
Detr源码解读(mmdetection) 1、原理简要介绍 整体流程: 在给定一张输入图像后,1)特征向量提取: 首先经过ResNet提取图像的最后一层特征图F。注意此处仅仅用了一层特征图,是因为后续计算复杂度原因,另外&am…...
一个.Net Core开发的,撑起月6亿PV开源监控解决方案
更多开源项目请查看:一个专注推荐.Net开源项目的榜单 项目发布后,对于我们程序员来说,项目还不是真正的结束,保证项目的稳定运行也是非常重要的,而对于服务器的监控,就是保证稳定运行的手段之一。对数据库、…...
C语言数据结构初阶(2)----顺序表
目录 1. 顺序表的概念及结构 2. 动态顺序表的接口实现 2.1 SLInit(SL* ps) 的实现 2.2 SLDestory(SL* ps) 的实现 2.3 SLPrint(SL* ps) 的实现 2.4 SLCheckCapacity(SL* ps) 的实现 2.5 SLPushBack(SL* ps, SLDataType x) 的实现 2.6 SLPopBack(SL* ps) 的实现 2.7 SLP…...
K8S常用命令速查手册
K8S常用命令速查手册一. K8S日常维护常用命令1.1 查看kubectl版本1.2 启动kubelet1.3 master节点执行查看所有的work-node节点列表1.4 查看所有的pod1.5 检查kubelet运行状态排查问题1.6 诊断某pod故障1.7 诊断kubelet故障方式一1.8 诊断kubelet故障方式二二. 端口策略相关2.1 …...
Linux系统下命令行安装MySQL5.6+详细步骤
1、因为想在腾讯云的服务器上创建自己的数据库,所以我在这里是通过使用Xshell 7来连接腾讯云的远程服务器; 2、Xshell 7与服务器连接好之后,就可以开始进行数据库的安装了(如果服务器曾经安装过数据库,得将之前安装的…...
13.STM32超声波模块讲解与实战
目录 1.超声波模块讲解 2.超声波时序图 3.超声波测距步骤 4.项目实战 1.超声波模块讲解 超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有4个引脚:VCC GND Trig(触发)ÿ…...
逆向之Windows PE结构
写在前面 对于Windows PE文件结构,个人认为还是非常有必要掌握和了解的,不管是在做逆向分析、免杀、病毒分析,脱壳加壳都是有着非常重要的技能。但是PE文件的学习又是一个非常枯燥过程,希望本文可以帮你有一个了解。 PE文件结构…...
ACL是什么
目录 一、ACL是什么 二、ACL的使用:setacl与getacl 1)针对特定使用者的方式: 1. 创建acl_test1后设置其权限 2. 读取acl_test1的权限 2)针对特定群组的方式: 3)针对有效权限 mask 的设置方式…...
操作系统核心知识点整理--内存篇
操作系统核心知识点整理--内存篇按段对内存进行管理内存分区内存分页为什么需要多级页表TLB解决了多级页表什么样的缺陷?TLB缓存命中率高的原理是什么?段页结合: 为什么需要虚拟内存?虚拟地址到物理地址的转换过程段页式管理下程序如何载入内存?页面置…...
从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)
一、iftop是什么iftop是类似于top的实时流量监控工具。作用:监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等官网:http://www.ex-parrot.com/~pdw/iftop/二、界面说明>代表发送数据,< 代表接收数…...
第一篇博客------自我介绍篇
目录🔆自我介绍🔆学习目标🔆如何学习单片机Part 1 基础理论知识学习Part 2 单片机实践Part 3 单片机硬件设计🔆希望进入的公司🔆结束语🔆自我介绍 Hello!!!我是一名即已经步入大二的计算机小白。 --------…...
No suitable device found for this connection (device lo not available(网络突然出问题)
当执行 ifup ens33 出现错误:[rootlocalhost ~]# ifup ens33Error: Connection activation failed: No suitable device found for this connection (device lo not available because device is strictly unmanaged).1解决办法:[rootlocalhost ~]# chkc…...
【算法设计技巧】分治算法
分治算法 用于设计算法的另一种常用技巧为分治算法(divide and conquer)。分治算法由两部分组成: 分(divide):递归解决较小的问题(当然,基准情况除外)治(conquer):然后,从子问题的解构建原问题的解。 传统上&#x…...
已解决kettle新建作业,点击保存抛出异常Invalid state, the Connection object is closed.
已解决kettle新建作业,点击保存进资源数据库抛出异常Invalid state, the Connection object is closed.的解决方法,亲测有效!!! 文章目录报错问题报错翻译报错原因解决方法联系博主免费帮忙解决报错报错问题 一个小伙伴…...
【设计模式】 工厂模式介绍及C代码实现
【设计模式】 工厂模式介绍及C代码实现 背景 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来…...
深入浅出PaddlePaddle函数——paddle.arange
分类目录:《深入浅出PaddlePaddle函数》总目录 相关文章: 深入浅出TensorFlow2函数——tf.range 深入浅出Pytorch函数——torch.arange 深入浅出PaddlePaddle函数——paddle.arange 语法 paddle.arange(start0, endNone, step1, dtypeNone, nameNone…...
X86 ATT常用寄存器及其操作指令
X86 AT&T常用寄存器及其操作指令 常用寄存器 esp寄存器:当我们需要访问堆栈帧中的变量时,可以使用esp寄存器来获取堆栈帧的基址,以便能够正确地访问堆栈帧中的变量。ebp寄存器:当我们需要调用一个函数时,可以使用…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
