书名:Qt程序设计基础基于银河麒麟桌面操作系统
ISBN:978-7-115-61740-8
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 苏 静 申 波
责任编辑 李永涛
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
银河麒麟桌面操作系统V10是一款简单易用、稳定安全、高效创新的产品,配备有完善的开发工具,支持主流编程语言,提供了良好的开发环境和大量的开发库。同时它支持国产数据库和中间件,以及封装系统级SDK,可以很好地支撑项目开发工作。
本书基于银河麒麟桌面操作系统V10,以Qt 5.12.8为开发平台,将理论知识与开发经验相结合,深入浅出地介绍桌面应用开发的常用技术。本书分为10章,内容包括初识Qt、开发环境、编程基础、窗口设计、对话框、事件处理、信号槽、常用控件、布局管理、文件管理等。
本书可作为计算机、软件工程、物联网等信息类专业本科、专科层次的教学用书,也适合Qt编程的初学者、Qt跨平台应用开发人员参考。
科技创新成为百年变局中的关键变量,只有抢占科技制高点,才能赢得战略主动。操作系统作为信息产业的魂,是总体协调、管理和控制计算机硬件与软件资源的基础模块,其自主创新水平决定着整个信息化生态的自主可控程度。
回顾操作系统整体发展之路,我们认为操作系统离不开软件开发者的支持,需要开展大规模的应用软件开发及验证工作,打造千万数量级别的软件生态,才能打破国外操作系统的垄断地位。因此快速培养一批基于国产操作系统的应用软件开发人员显得尤为重要。
操作系统不同,基于其上的应用开发也有很大的不同。在我国,国产操作系统普遍基于Linux内核进行研发。相较于Windows系统而言,Linux系统使用的编译工具、调度工具都有很大区别;从应用开发角度来看,企业开发人员在Windows系统平台上使用Visual Studio开发的集成环境无法兼容Linux系统平台。《Qt程序设计基础 基于银河麒麟桌面操作系统》详细讲解了Qt开发环境的配置、使用,以及在该环境下进行软件开发的基本方法,可以帮助应用开发的工程师及高校学生充分了解相应操作系统的桌面应用开发方法。
在人工智能、物联网、大数据、云计算等新一代信息技术高速发展的今天,想要最高效、最大限度、最合理地利用技术和资源,离不开整个生态的开放合作、协同创新和共赢共荣。希望产学研各界开展更加紧密的合作,推动操作系统、应用软件等行业企业技术自主创新、产品更新迭代,紧紧抓住网信产业发展浪潮之下的历史契机,实现弯道超车,为建设网络强国、数字中国贡献一份力量。
中国工程院院士
2023年6月
主 编
苏 静 申 波
编 委
吴江红 白树明
王 嫄 刘 旸 梁 倩
Qt 是一个完整的开发框架,该工具旨在简化桌面、嵌入式和移动平台的应用,以及创建用户界面。Qt的每次升级换代都代表了桌面应用开发领域的发展前沿,很多现代设计理念和方法都在新版本中得以体现,因此,Qt在桌面应用开发领域成了用户的首选框架。Qt提供丰富的功能和便捷的接口,可以极大提高开发人员的工作效率。
本书突出实用性,注重培养学生的实践能力,具有以下特色。
(1)在编排方式上充分考虑开发类课程的特点,每个技术点基本上都是按照功能概述、语法讲解、使用示例的模式组织的,这样既能帮助读者学习理论知识,又能通过示例提高读者的动手能力,真正做到理论和实践相结合。
(2)在内容组织上尽量本着循序渐进的原则,先从开发环境的搭建着手,然后是编程基础,接着精心选取Qt中针对桌面应用开发的一些常用功能作为主要内容,并采用理论知识与案例融合的模式,使读者在掌握理论知识的前提下,增强动手能力,通过案例的实践,加深读者对理论知识的理解,二者相辅相成。
(3)书中涉及的知识点,大部分都配有相应的示例及示例解析,旨在提高读者编码能力的同时,加深其对底层实现原理的理解。
(4)在文字叙述上尽量做到言简意赅、重点突出。
全书分为10章,主要内容如下。
● 第1章:介绍Qt的版本、特点及使用领域等。
● 第2章:介绍Qt开发环境的搭建。
● 第3章:介绍Qt基本的数据类型、字符串、容器类、迭代器等。
● 第4章:介绍Qt主窗口的构成,菜单栏、工具栏、状态栏的具体使用。
● 第5章:介绍Qt中常用对话框的基本使用及自定义对话框的实现。
● 第6章:介绍Qt中事件的传递与分发、处理与过滤等。
● 第7章:介绍Qt信号槽的基本使用及高级应用等。
● 第8章:介绍Qt中的常用控件及自定义控件的用法等。
● 第9章:介绍Qt中的常用布局管理器及分离器的用法等。
● 第10章:介绍Qt中的文件管理操作。
本书可作为计算机、软件工程、物联网等信息类专业本科、专科层次的教学用书,也适合Qt编程的初学者、Qt跨平台应用开发人员参考。
本书配套资源内容分为以下两部分。
1.案例源码
本书案例源码收录在“源码”文件夹下。
2.课件文件
本书配有课件文件,收录在“PDF”文件夹下,以供教师上课使用。
感谢您选择了本书,也欢迎您把对本书的意见和建议告诉我们,电子邮箱:college@kylinos.cn。
苏 静
2023年5月
在银河麒麟桌面操作系统的应用生态中,多数软件都是使用Qt进行开发的。在讲解Qt的具体使用方法之前,本章将从Qt概述,Qt的发展历程、版本及特点,以及Qt的使用领域等方面进行介绍,以便读者对Qt有大致的了解。
Qt是一个跨平台的C++开发库。
(1)Qt的作用。
Qt主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以用来开发命令用户界面(Command User Interface,CUI)程序。
(2)学习Qt的基础。
Qt是采用纯C++开发的,完全兼容C++的语法,所以学好C++非常有必要。对于不了解C++的读者,建议先学习一些相关课程;如果是已经具备一定C++基础的读者,可以直接学习Qt。
(3)Qt的跨平台。
Qt支持的操作系统有很多,如通用操作系统Windows、Linux、UNIX,智能手机系统Android、iOS,嵌入式系统QNX、VxWorks等。对于任何一个平台,Qt都提供了统一的接口,这点对于开发者非常友好。
Qt并不是一个新生框架,它经历了多个版本的迭代,如今已经非常成熟。
(1)Qt的诞生。
Qt最早是1991年由挪威的Eirik Chambe-Eng和Haavard Nord开发的,他们随后于1994年3月4日正式成立奇趣科技(Trolltech)公司。
(2)Qt的发展。
Qt原本是商业授权的跨平台开发库,在2000年Trolltech公司为开源社区发布了遵循GNU GPL(General Public License,通用公共许可证)的开源版本。
2008年,诺基亚(Nokia)公司收购了Trolltech公司,并增加了GNU LGPL(Lesser General Public License,宽通用公共许可证)的授权模式。
Qt商业授权业务于2011年3月出售给了芬兰IT服务公司Digia。
2014年4月,跨平台的集成开发环境(Integrated Development Environment,IDE)Qt Creator 3.1.0发布,同年5月20日配发了Qt 5.3正式版,至此,Qt实现了对iOS、Android、Windows Phone等各平台的全面支持。
Qt的发展历程见表1-1。
表1-1 Qt的发展历程
时间 |
事件 |
---|---|
1991年 |
Eirik Chambe-Eng和Haavard Nord开发支持X11和Windows的Qt |
1994年 |
Trolltech公司成立 |
1998年4月 |
KDE Free Qt基金会成立 |
1998年7月 |
Qt 1.40发布 |
1999年3月 |
QPL1.0发布 |
1999年6月 |
Qt 2.0发布 |
2000年3月 |
嵌入式Qt发布 |
2000年9月 |
Qt免费版开始使用GPL |
2000年9月 |
Qt 2.2发布 |
2000年10月 |
Qt/Embedded开始使用GPL宣言 |
2008年 |
Nokia公司从Trolltech公司收购了Qt,并增加了LGPL的授权模式 |
2011年 |
Digia公司从Nokia公司收购了Qt的商业授权业务,从此Nokia公司负责Qt on Mobile,而Qt Commercial由Digia公司负责 |
2012年 |
Nakia公司宣布将Qt软件业务出售给芬兰IT服务公司Digia |
2013年7月 |
Digia公司的Qt开发团队在其官方博客上宣布Qt 5.1正式版发布 |
2013年12月 |
Digia公司的Qt开发团队宣布Qt 5.2正式版发布 |
2014年4月 |
Digia公司的Qt开发团队宣布Qt Creator 3.1.0正式版发布 |
2014年5月 |
Digia公司的Qt开发团队宣布Qt 5.3正式版发布 |
2020年12月 |
Qt 6.0发布 |
2022年4月 |
Qt 6.3发布 |
(1)Qt的版本。
Qt按照不同的版本发行,分为商业版和开源版。
● 商业版:专门为商业软件提供开发。Digia公司提供传统商业软件发行版,并且提供在商业有效期内的免费升级和技术支持服务。
● 开源版:目前Qt的开源授权有两种,一种是GPL授权,另一种是LGPL授权(Nokia收购后新增)。
对于这两种开源授权,简单来说,使用GPL版本的软件一定还是GPL的开源软件,无论是使用了Qt的程序代码还是修改了Qt库代码,都必须按照GPL来发布,这是由GPL的“传染性”决定的。
GPL是什么都要开源,这对商业软件应用是不利的,所以Nokia增加了LGPL授权[第一个字母L代表Lesser(宽松版)或Library(开发库版)]。使用LGPL授权就可以利用Qt官方动态链接库,而不必开放商业代码。只要不修改和定制Qt库,仅使用Qt官方发布的动态链接库就可以不开源,这是商业友好的授权模式。
除了以上提及的GPL和LGPL,还有更多开源协议,具体如图1-1所示。
图1-1
(2)Qt的特点。
Qt最大的特点就是跨平台,它几乎支持所有的平台,进而极大地降低了开发成本。其次,Qt接口简单、容易上手,这点对初学者非常友好,而且Qt框架的封装非常规范,因此,学习Qt对学习其他框架也有一定的参考意义。在内存管理方面,Qt也提供了一些简化内存回收的机制,如引用计数、显式共享、隐式共享、写时复制、智能指针等。Qt还有一些比较显著的特点,如使用Qt开发效率极高,能够快速完成应用程序的构建。Qt还有很好的社区氛围,市场份额也在稳步上升。使用Qt还可以进行嵌入式开发,这点在Qt的使用领域中也有所提及。
作为一个跨平台的框架,Qt在GUI领域、嵌入式领域,甚至移动端领域都扮演着重要的角色。
(1)GUI领域。
Qt虽然经常被当作一个GUI库,用来开发GUI应用程序,但这并不是Qt的全部。Qt除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多其他功能,如多线程处理、访问数据库、图像处理、音频与视频处理、网络通信、文件操作等。大部分应用程序都可以使用Qt实现。除了与计算机底层结合特别紧密的,如驱动程序开发,因为它直接使用硬件提供的编程接口,而不能使用操作系统自带的函数库,其余的应用程序基本都可用Qt实现。
1997年,Qt被用来开发Linux桌面环境KDE(K Desktop Environment),大获成功,使Qt成为Linux环境下开发C++ GUI应用程序的实施标准。
市面上比较流行的软件,如WPS、YY语音、Skype、豆瓣电台、淘宝助理、千牛、暴雪的战网客户端、极品飞车、VirtualBox、Opera、咪咕音乐、Google地图、Adobe Photoshop Album等,都是使用Qt开发的。
(2)嵌入式领域。
在嵌入式的方向Qt也是“主力军”,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通信、航空航天、汽车电子、医疗设备、仪器仪表等相关行业的程序开发。
比较有代表性的如Mercedes-Benz、PEUGEOT汽车数字座舱等。
(3)移动端领域。
Qt本身也支持Android、iOS等移动端领域的应用程序开发,但是由于Android本身已经有官方提供的Java和Kotlin(科特林),iOS有官方提供的Objective-C和Swift,因此,Qt在移动端领域还有很大的提升空间。