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

《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(触发)&#xff…...

逆向之Windows PE结构

写在前面 对于Windows PE文件结构,个人认为还是非常有必要掌握和了解的,不管是在做逆向分析、免杀、病毒分析,脱壳加壳都是有着非常重要的技能。但是PE文件的学习又是一个非常枯燥过程,希望本文可以帮你有一个了解。 PE文件结构…...

ACL是什么

目录 一、ACL是什么 二、ACL的使用:setacl与getacl 1)针对特定使用者的方式: 1. 创建acl_test1后设置其权限 2. 读取acl_test1的权限 2)针对特定群组的方式: 3)针对有效权限 mask 的设置方式&#xf…...

操作系统核心知识点整理--内存篇

操作系统核心知识点整理--内存篇按段对内存进行管理内存分区内存分页为什么需要多级页表TLB解决了多级页表什么样的缺陷?TLB缓存命中率高的原理是什么?段页结合: 为什么需要虚拟内存?虚拟地址到物理地址的转换过程段页式管理下程序如何载入内存?页面置…...

从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)

一、iftop是什么iftop是类似于top的实时流量监控工具。作用&#xff1a;监控网卡的实时流量&#xff08;可以指定网段&#xff09;、反向解析IP、显示端口信息等官网&#xff1a;http://www.ex-parrot.com/~pdw/iftop/二、界面说明>代表发送数据&#xff0c;< 代表接收数…...

第一篇博客------自我介绍篇

目录&#x1f506;自我介绍&#x1f506;学习目标&#x1f506;如何学习单片机Part 1 基础理论知识学习Part 2 单片机实践Part 3 单片机硬件设计&#x1f506;希望进入的公司&#x1f506;结束语&#x1f506;自我介绍 Hello!!!我是一名即已经步入大二的计算机小白。 --------…...

No suitable device found for this connection (device lo not available(网络突然出问题)

当执行 ifup ens33 出现错误&#xff1a;[rootlocalhost ~]# ifup ens33Error: Connection activation failed: No suitable device found for this connection (device lo not available because device is strictly unmanaged).1解决办法&#xff1a;[rootlocalhost ~]# chkc…...

【算法设计技巧】分治算法

分治算法 用于设计算法的另一种常用技巧为分治算法(divide and conquer)。分治算法由两部分组成&#xff1a; 分(divide)&#xff1a;递归解决较小的问题(当然&#xff0c;基准情况除外)治(conquer)&#xff1a;然后&#xff0c;从子问题的解构建原问题的解。 传统上&#x…...

已解决kettle新建作业,点击保存抛出异常Invalid state, the Connection object is closed.

已解决kettle新建作业&#xff0c;点击保存进资源数据库抛出异常Invalid state, the Connection object is closed.的解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录报错问题报错翻译报错原因解决方法联系博主免费帮忙解决报错报错问题 一个小伙伴…...

【设计模式】 工厂模式介绍及C代码实现

【设计模式】 工厂模式介绍及C代码实现 背景 在软件系统中&#xff0c;经常面临着创建对象的工作&#xff1b;由于需求的变化&#xff0c;需要创建的对象的具体类型经常变化。 如何应对这种变化&#xff1f;如何绕过常规的对象创建方法(new)&#xff0c;提供一种“封装机制”来…...

深入浅出PaddlePaddle函数——paddle.arange

分类目录&#xff1a;《深入浅出PaddlePaddle函数》总目录 相关文章&#xff1a; 深入浅出TensorFlow2函数——tf.range 深入浅出Pytorch函数——torch.arange 深入浅出PaddlePaddle函数——paddle.arange 语法 paddle.arange(start0, endNone, step1, dtypeNone, nameNone…...

X86 ATT常用寄存器及其操作指令

X86 AT&T常用寄存器及其操作指令 常用寄存器 esp寄存器&#xff1a;当我们需要访问堆栈帧中的变量时&#xff0c;可以使用esp寄存器来获取堆栈帧的基址&#xff0c;以便能够正确地访问堆栈帧中的变量。ebp寄存器&#xff1a;当我们需要调用一个函数时&#xff0c;可以使用…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

相关类相关的可视化图像总结

目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系&#xff0c;可直观判断线性相关、非线性相关或无相关关系&#xff0c;点的分布密…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

DeepSeek越强,Kimi越慌?

被DeepSeek吊打的Kimi&#xff0c;还有多少人在用&#xff1f; 去年&#xff0c;月之暗面创始人杨植麟别提有多风光了。90后清华学霸&#xff0c;国产大模型六小虎之一&#xff0c;手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水&#xff0c;单月光是投流就花费2个亿。 疯…...

【Zephyr 系列 16】构建 BLE + LoRa 协同通信系统:网关转发与混合调度实战

🧠关键词:Zephyr、BLE、LoRa、混合通信、事件驱动、网关中继、低功耗调度 📌面向读者:希望将 BLE 和 LoRa 结合应用于资产追踪、环境监测、远程数据采集等场景的开发者 📊篇幅预计:5300+ 字 🧭 背景与需求 在许多 IoT 项目中,单一通信方式往往难以兼顾近场数据采集…...