《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寄存器:当我们需要调用一个函数时,可以使用…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
