本书是为高等院校面向应用型人才培养编写的C++语言程序设计教材。全书共分9章,主要内容包括QtC++开发环境介绍、C++程序设计基础、类与对象、QtGUI程序设计基础以及图形界面编程综合实例、继承与派生、虚函数与多态、运算符重载、模板和异常处理、输入输出流与命名空间。本书采用Qt跨平台C++程序开发框架,结合“案例驱动”编写方式,语法介绍语言精练、内容深入浅出、循序渐进,程序案例生动易懂,以规则几何图形面积和体积计算程序设计案例贯穿全书,既传授C++语言的基本概念和知识,又传授C++图形界面程序设计的基本方法及基本技能。本书既可以作为高等院校本科及专科学生C++语言程序设计的教材,又可以作为教师、自学者的参考用书,同时也可供各类软件开发设计人员学习参考。
前言
C++是优秀的计算机程序设计语言,它的程序设计功能非常强大,比如鸿蒙操作系统主要就是用C++语言编写的。我国绝大多数高等院校都把它作为程序设计入门教学的首选。许多经典的C++语言程序设计教材都是基于Visual C++控制台程序设计框架编写的,内容包括C++语言概述、基本数据类型、运算符和表达式、程序流程控制、数组、函数、指针、结构体、共用体与枚举、类和对象、运算符重载、继承、虚函数与多态、模板、流等C++语言的基本概念和基本知识。这类教材强调的是培养学生理解和掌握C++语言的语法及逻辑规则,强调对C++程序设计语言的字、词、数据、表达式、语句、函数、类、对象等基本概念知识的掌握。在多年的教学实践中我们发现,这类教材缺乏对图形界面C++程序设计的介绍,学生要想掌握用C++语言设计图形界面的程序,还必须自学或者参加Visual C++语言课程的学习,而Visual C++语言体系庞大,学起来有一定的困难,造成很多学生虽然学了C++语言,却不能很好地使用它。
笔者所在学校在多年的教学改革和教学实践中,将C++语言的教学和当前流行的Qt跨平台开发框架相结合,增加了基于Qt的图形界面应用程序设计,并于2014年出版了第一部教材——《Qt C++跨平台图形界面程序设计基础》。该教材在实际教学应用中得到广泛的认可,基于Qt C++的跨平台、简单易学的优点,使得学生不仅掌握C++语言的基本概念、基本知识和基本的程序设计方法,更重要的是培养了初步的跨操作系统平台开发图形界面程序的基本技能,提高了学习的兴趣。而且Qt框架已正式对HarmonyOS提供支持,开发者可以利用Qt的C++技术栈为鸿蒙平台创建应用程序,这使得Qt C++程序设计的学习更有必要,因为鸿蒙时代已经到来。
在对课程教学改革与实践的不断探索中,结合读者的反馈意见,作者对教材进行了修订和完善,推出了第2版。第2版在第1版的基础上完成了两方面的修订: 一是扩充和完善了C++编程基础和面向对象程序设计的相关章节内容,包括章节调整,增加和完善了语法知识和编程实例以及习题;二是将图形界面程序设计与面向对象编程有机地结合在一起,不是把图形界面编程应用作为单独的一章,而是与讲解C++语言基本知识的章节相融合,先讲解面向对象基础知识,再结合图形界面编程实现,并围绕一个规则几何图形面积和体积计算的综合程序实例逐步展开和完善。
本次修订是本书的第三次修订,一是将书名由原来的《Qt C++跨平台图形界面程序设计基础》更改为《Qt C++语言程序设计》,使书名与书的内容和教学目标更趋一致;二是原书是基于Qt4编写的,本次主要基于Qt5进行了修订,使得教材内容与时俱进,更符合教师教学和学生学习的要求。本书各章节的内容如下。
第1章,走进Qt。包括Qt简介,Windows平台下Qt C++语言集成开发环境的安装与配置,Windows平台下如何使用Qt4、Qt5开发C++语言程序,Qt4平台项目向Qt5平台移植,中文版Qt C++语言集成开发环境安装中常见问题的解决办法,不同编译器和不同版本的Qt共存问题等内容。
第2章,C++程序设计基础。包括C++语言简介,C++控制台应用程序,C++语言的基本语法成分,基本数据类型与表达式,结构化程序设计,函数,数组与字符串,指针与引用等内容。
第3章,类与对象。包括面向对象程序设计概述,类与对象的定义,构造函数与析构函数,对象的深复制,静态成员,常类型,友元,对象数组与类的组合等内容。
第4章,Qt GUI程序设计基础。包括图形界面程序设计基础知识,Qt C++中的对象、窗体、内置的窗口部件、对话框类、信号和槽、元对象系统, Qt命令行方式开发C++语言图形界面程序, Qt中窗口部件的布局,对话框程序设计, Qt5 Creator开发图形界面程序综合案例——规则几何图形面积和体积计算之菜单、工具栏的设计、规则几何图形面积和体积计算之三角形面积计算等内容。
第5章,继承与派生。包括类的继承,基类与派生类,类成员的访问控制,重名的成员,派生类中访问静态成员,派生类的构造函数与析构函数,多继承,虚继承,Qt5 Creator开发图形界面程序综合案例——规则几何图形面积和体积计算之圆柱体体积计算等内容。
第6章,虚函数与多态。包括静态联编和动态联编,类指针的关系,虚函数,纯虚函数和抽象类,Qt5 Creator开发图形界面程序综合案例——规则几何图形面积和体积计算之矩形、正方形、梯形面积计算等内容。
第7章,运算符重载。包括运算符重载概述,运算符重载的规则,友元或成员函数重载运算符,常用运算符的重载等内容。
第8章,模板和异常处理。包括模板的概念,函数模板,类模板,标准模板库STL,容器、算法、迭代器,异常处理等内容。
第9章,输入输出流与命名空间。包括I/O流概述,标准I/O流,标准I/O流对象,标准输入输出,重载插入/提取运算符,输入输出流的成员函数,流格式控制,ios成员函数,操纵算子,文件及其输入输出,命名空间,Qt5 Creator开发图形界面程序综合案例——规则几何图形面积和体积计算之圆柱体体积的保存等内容。
修订后的教材具备如下特色。
(1) 基于C++语言程序设计教学大纲,结合社会应用型人才需求现状,教材内容编排具有很强的针对性。
(2) 注重编程实践能力的培养,把跨操作系统平台程序设计、图形界面程序设计和面向对象的程序设计与C++语言的基本概念和基本知识有机结合,不但传授给学生C++语言的基本概念和基本知识,而且使学生掌握利用C++进行图形界面程序设计和跨操作系统平台程序设计的基本技能。
(3) 注重易用性,知识完善,案例丰富,即使没有任何程序设计基础,也可以通过本书的学习,循序渐进、由浅入深地掌握C++程序设计语言的语法、面向对象程序设计的方法和跨平台图形界面程序设计技能。
(4) 既适合于程序设计初学者,也适合于希望进一步学习图形界面编程的人员。从Qt图形界面程序设计开始,本书的第4、5章、9章,全部围绕一个综合应用实例逐步完善一个图形界面程序的设计,使读者全面学习Qt图形界面开发的相关技术。
(5) 以跨Windows、Linux平台,基于Qt的C++语言编程为框架,通过案例驱动教学,内容精练、结构紧凑,通俗易懂、重点突出,注重实用和能力的培养,克服了一般C++语言程序设计教科书中学习C++枯燥的缺点,通过生动有趣的案例,激发学生的学习兴趣,让学生由衷地喜欢上C++程序设计语言,掌握程序设计技巧和使用C++分析解决实际问题的动手能力。
由于作者水平有限,书中不足之处在所难免,敬请读者批评指正。 编者
2026年1月
目录
第1章走进Qt1
1.1Qt简介1
1.1.1认识Qt1
1.1.2Qt开发环境简介2
1.1.3使用Qt开发C++应用程序的优势3
1.2Qt的下载、安装与配置4
1.2.1Windows平台下Qt4 C++语言集成开发环境的安装与配置4
1.2.2Windows平台下Qt5 C++语言集成开发环境的安装与配置27
1.2.3Linux平台下Qt的C++语言开发环境的安装与配置35
1.3Qt Creator集成开发环境41
1.3.1Qt Creator集成开发环境简介41
1.3.2Qt Creator常用菜单功能介绍42
1.4Qt Creator的基本操作43
1.4.1Qt Creator的启动与退出43
1.4.2使用Qt创建、打开和关闭项目43
1.4.3Qt Creator的编辑器、项目视图的操作48
1.4.4文件的打开、编辑、保存与关闭49
1.4.5项目编译模式及其配置50
1.4.6编译、连接生成项目的可执行文件50
1.4.7纠正编译或连接出现的错误50
1.4.8Qt工具栏的使用51
1.5Qt Creator联机帮助系统51
1.5.1Qt中如何寻求帮助51
1.5.2帮助文件的打开及使用源代码编辑器52
1.5.3缩小查找范围53
1.6使用Qt开发C++语言程序53
1.6.1Windows平台下使用Qt4开发C++语言程序53
1.6.2Windows平台下使用Qt5开发C++语言程序62
1.6.3Linux平台下使用Qt开发C++语言程序71
1.7Qt5简要介绍75
1.7.1Qt5简介75
1.7.2Qt4平台项目向Qt5平台移植77
1.8习题78第2章C++程序设计基础80
2.1C++语言简介80
2.1.1认识C++语言80
2.1.2C++的标准化80
2.2C++控制台应用程序81
2.2.1C++控制台程序举例81
2.2.2C++控制台源程序的结构83
2.3C++语言的基本语法成分84
2.3.1C++语言字符集84
2.3.2C++语言的基本语法单位84
2.4基本数据类型与表达式86
2.4.1数据类型86
2.4.2常量、变量87
2.4.3运算符与表达式89
2.4.4数据类型的转换93
2.5C++控制台程序常用的输入输出95
2.6结构化程序设计97
2.6.1结构化程序设计概述97
2.6.2顺序结构97
2.6.3选择结构98
2.6.4循环结构102
2.6.5其他控制语句106
2.6.6常用算法程序举例108
2.7函数111
2.7.1函数概述111
2.7.2函数的其他特性114
2.7.3变量的作用域与存储类别116
2.8数组与字符串120
2.8.1数组120
2.8.2字符串与string类124
2.9指针与引用127
2.9.1指针127
2.9.2引用128
2.10const修饰符132
2.11动态内存管理134
2.12习题137
2.12.1选择题137
2.12.2填空题138
2.12.3编程题139第3章类与对象140
3.1面向对象程序设计概述140
3.1.1面向对象的基本概念140
3.1.2面向对象的基本特征142
3.1.3面向对象的程序设计语言简介144
3.2类与对象的定义145
3.2.1类的定义145
3.2.2对象的定义与使用151
3.2.3类的作用域154
3.2.4类的封装性和信息隐藏——公有接口与私有实现的分离156
3.3构造函数与析构函数157
3.3.1构造函数158
3.3.2复制构造函数165
3.3.3析构函数169
3.4对象的深复制171
3.5静态成员173
3.5.1静态数据成员173
3.5.2静态成员函数175
3.6常类型177
3.6.1类的常数据成员177
3.6.2类的常成员函数178
3.6.3常对象180
3.7友元181
3.7.1友元函数181
3.7.2友元类185
3.7.3友元应用举例186
3.8对象数组与类的组合188
3.8.1对象数组188
3.8.2类的组合191
3.9程序举例194
3.10习题196
3.10.1选择题196
3.10.2分析程序题198
3.10.3问答题200
3.10.4编程题200第4章Qt GUI程序设计基础201
4.1图形界面程序设计基础知识201
4.1.1Qt C++中的对象201
4.1.2Qt C++中的窗体202
4.1.3Qt内置的窗口部件和对话框类202
4.2Qt的信号和槽207
4.3Qt的元对象系统208
4.4Qt命令行方式开发C++语言图形界面程序209
4.4.1程序的编辑、编译和运行209
4.4.2Qt C++图形界面程序如何响应用户的操作212
4.4.3Qt中如何实现窗口部件的布局212
4.5命令行方式下对话框程序设计214
4.6可扩展的对话框设计222
4.7规则几何图形面积和体积计算之菜单、工具栏的设计——Qt5 Creator开发
图形界面程序综合案例235
4.7.1关于Qt项目235
4.7.2创建项目ReFigCalculator235
4.7.3创建项目程序的菜单、子菜单及其工具栏按钮240
4.8规则几何图形面积和体积计算之三角形面积计算——Qt5 Creator开发图形
界面程序综合案例255
4.8.1三角形面积计算对话框的设计与实现255
4.8.2设计三角形类,实现面积计算功能267
4.9规则几何图形面积和体积计算之圆面积计算——Qt5 Creator开发图形界面
程序综合案例272
4.9.1Qt4平台项目导入Qt5平台的步骤和方法272
4.9.2圆面积计算对话框的设计与实现275
4.9.3增加圆形类,实现面积计算功能278
4.10习题283第5章继承与派生285
5.1继承概述285
5.2基类与派生类286
5.2.1派生类的定义286
5.2.2访问控制289
5.2.3重名的成员293
5.2.4派生类中访问静态成员295
5.3派生类的构造函数与析构函数296
5.3.1构造函数和析构函数的执行顺序296
5.3.2派生类构造函数的定义297
5.3.3派生类析构函数的定义300
5.3.4程序举例301
5.4多继承303
5.4.1派生类的定义304
5.4.2虚继承305
5.5Qt5 Creator开发图形界面程序综合案例——规则几何图形面积和体积计算
之圆柱体体积计算306
5.5.1圆柱体体积计算对话框的设计与实现306
5.5.2增加圆柱体类,实现体积计算功能310
5.6习题315
5.6.1选择题315
5.6.2问答及编程题316第6章虚函数与多态317
6.1静态联编和动态联编317
6.2类指针的关系319
6.3虚函数321
6.4纯虚函数和抽象类326
6.5规则几何图形面积和体积计算之矩形、正方形、梯形面积计算——Qt5 Creator
开发图形界面程序综合案例331
6.5.1矩形面积计算对话框的设计与实现331
6.5.2正方形面积计算对话框的设计与实现335
6.5.3梯形面积计算对话框的设计与实现339
6.5.4添加矩形、正方形和梯形对话框类343
6.5.5实现矩形、正方形和梯形对话框的面积计算功能346
6.6习题348
6.6.1选择题348
6.6.2填空题348
6.6.3编程题350第7章运算符重载351
7.1运算符重载概述351
7.2运算符重载的规则353
7.3友元或成员函数重载运算符354
7.3.1友元函数重载运算符354
7.3.2成员函数重载运算符356
7.3.3友元函数和成员函数重载的区别358
7.4常用运算符的重载359
7.4.1自增/自减运算符的重载359
7.4.2赋值运算符的重载363
7.4.3下标运算符的重载365
7.5习题366
7.5.1选择题366
7.5.2编程题367第8章模板和异常处理368
8.1模板的概念368
8.2函数模板368
8.2.1函数模板的定义368
8.2.2函数模板的实例化369
8.2.3函数模板应用举例371
8.3类模板372
8.3.1类模板的定义372
8.3.2类模板的实例化373
8.3.3类模板的应用举例374
8.4标准模板库377
8.4.1容器377
8.4.2算法380
8.4.3迭代器382
8.5异常处理383
8.5.1异常处理概述383
8.5.2异常处理的实现384
8.5.3标准库中的异常类型388
8.6习题390
8.6.1选择题390
8.6.2编程题390第9章输入输出流与命名空间392
9.1I/O流概述393
9.2标准I/O流394
9.2.1标准I/O流对象394
9.2.2标准输入输出395
9.2.3重载插入/提取运算符398
9.2.4输入输出流的成员函数400
9.3流格式控制404
9.3.1ios成员函数404
9.3.2操纵算子407
9.4文件的输入输出409
9.4.1文件409
9.4.2文件的打开和关闭410
9.4.3文本文件413
9.4.4二进制文件415
9.5命名空间421
9.6规则几何图形面积和体积计算之圆柱体体积的保存——Qt5 Creator开发图形
界面程序综合案例424
9.6.1圆柱体体积计算和保存对话框的设计与实现424
9.6.2实现圆柱体体积计算结果的保存功能427
9.6.3实现圆柱体体积计算结果的查询功能432
9.7习题434
附录AC++常用关键字435
附录BC++运算符436
附录CC/C++常用库函数437
参考文献440