零基础学Qt 6编程

978-7-115-63770-3
作者: 霍亚飞
译者:
编辑: 吴晋瑜
分类: C++

图书目录:

详情

这是一本Qt 6编程入门书,同步讲解了Qt Widgets和Qt Quick编程内容。全书共14章,前8章是基础内容,包括Qt概述、Qt Widgets窗口部件和Qt Quick控件、布局管理、事件系统、界面外观等内容,其中穿插介绍了Qt Creator开发环境、Qt信号和槽机制、Qt程序编译过程、QML语法基础等知识;第9章介绍图形动画基础;第10~12章介绍数据存储和显示的相关内容,本书从Qt涉及的众多应用领域中选取了常用的数据处理来重点讲解;第13章介绍多媒体应用;第14章介绍QML和C++的集成开发。本书注重知识点和实践的结合,提供的实例兼具示范性和实用性,并就知识点提供了Qt文档关键字提示,让读者在学习的过程中掌握自主学习的方法并逐步养成良好的编程习惯。 本书提供了课件PPT、实验讲义和程序源码,可作为高等院校相关课程的教材,也可作为各类软件开发人员的参考书。

图书摘要

版权信息

书名:零基础学Qt 6编程

ISBN:978-7-115-63770-3

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

版  权

编  著 霍亚飞

责任编辑 吴晋瑜

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

这是一本Qt 6编程入门书,同步讲解了Qt Widgets和Qt Quick编程内容。全书共14章,前8章是基础内容,包括Qt概述、Qt Widgets窗口部件和Qt Quick控件、布局管理、事件系统、界面外观等内容,其中穿插介绍了Qt Creator开发环境、Qt信号和槽机制、Qt程序编译过程、QML语法基础等知识;第9章介绍图形动画基础;第10~12章介绍数据存储和显示的相关内容,本书从Qt涉及的众多应用领域中选取了常用的数据处理来重点讲解;第13章介绍多媒体应用;第14章介绍QML和C++的集成开发。本书注重知识点和实践的结合,提供的实例兼具示范性和实用性,并就知识点提供了Qt文档关键字提示,让读者在学习的过程中掌握自主学习的方法并逐步养成良好的编程习惯。

本书提供了课件PPT、实验讲义和程序源码,可作为高等院校相关课程的教材,也可作为各类软件开发人员的参考书。

前  言

2020年12月,Qt 6.0发布。 Qt 6是Qt的一个新的重大版本,被重新设计为面向未来的生产力平台,提供了更强大、更灵活、更精简的下一代用户体验以及无限的可扩展性。不过新推出的前期版本缺少了Qt 5.15提供的一些常用功能。直到2021年9月,Qt 6.2发布,作为Qt 6系列中第一个长期支持版本,其包含了Qt 5.15中的所有常用功能以及为Qt 6添加的新功能,从这个版本开始,大量用户开始学习并将应用转移到Qt 6。2023年4月,Qt 6.5.0发布,该版本是Qt 6系列中第二个长期支持版本,相关功能趋于完善,本书基于该版本进行编写。

Qt 6包含两种编程技术:Qt Widgets和Qt Quick。早期Qt作为C++图形用户界面应用程序开发框架,只提供了基于C++ Widgets的编程方式。为了更好地迎合移动触摸设备,Qt 4.7引入了一种全新的高级用户界面技术Qt Quick和一种声明式编程语言QML,用于创建动态触摸式用户界面和轻量级应用程序。一开始,很多初学者和开发人员因学习和使用哪种技术感到困惑,由于对Qt Quick这项新技术不熟悉,加上当时的教程案例较少,更多的人倾向于学习和使用C++ Widgets。经过十几年的发展,现在移动触摸界面已经成为主流,而Qt Widgets已经趋于完善,Qt官方也把更多精力放到了Qt Quick上。所以,如果现在开始学习Qt,那么Qt Quick是必须学习的。当然,作为Qt根基的Qt Widgets也是要学习的。而且,二者的学习不仅不会冲突,还会相互辅助,同时学习两种编程技术会起到事半功倍的效果。

本书特色

本书的目标是成为一本能让读者零基础入门Qt的图书,既适合作为教材由老师讲授,又适合学生自主学习。鉴于此,本书采用了如下方式进行编写。

Qt Widgets和Qt Quick进行同步讲解。这是本书最大的特点。Qt现在已经发展为一个庞大的系统,只通过一本书将所有内容都详细介绍到是不现实的。本书精选了初学者入门Qt需要学习的一些核心内容,并主要针对图形动画、数据模型视图、Qt图表、多媒体等常用功能模块进行详细讲解。所有内容都同步讲解了在Qt Widgets和Qt Quick中的实现方式,让读者学习一遍就能掌握两种编程技术。另外,由于两种编程技术的理念和实现方式是相通的,读者会发现,学习了其中一种实现方式,再学习另外一种会很轻松。

实例教学。本书内容以初学者的角度进行叙述,每个小知识点都通过从头编写一个完整的程序来讲解,即便是初学者也可以轻松上手,快速编写出自己的图形界面程序。本书尽量避免使用晦涩难懂的术语,而使用初学者易于理解的语言编写,目标是与读者进行对话,让初学者在快乐中掌握知识。

授之以渔。本书旨在向读者传授一种学习方法,告诉读者怎样发现问题、解决问题,怎样获取知识,而不是向读者灌输知识。本书的很多内容是基于Qt参考文档的,读者在学习时一定要多参考Qt帮助文档。本书讲解所有知识点和示例程序时,都明确标出了其在Qt帮助文档中对应的关键字,从而让内容有迹可循。

社区支持。本书以Qt开源社区为依托。读者可以通过论坛、邮件、QQ群、微信公众号等方式和作者零距离交流。本书对应的网络教程是持续更新的,微信公众号和社区网站还会同步更新最新的资讯和优秀教程资源。

面向的读者

本书适合没有Qt编程基础、有Qt编程基础但是想系统学习Qt Widgets和Qt Quick开发的读者,也适合想从Qt 5跨入Qt 6编程的读者。要学习Qt Widgets编程内容,建议有一定的C++基础,没有基础的读者可以在学习本书的同时学习C++基础知识。本书提供了丰富的课件PPT、实验讲义和程序源码,可作为高等院校相关课程的入门教材。

如何使用本书

本书共14章,前8章是基础内容,其中第5章是重点和难点,需要读者加强学习;第9章介绍图形动画基础,学习完本章可以实现动态界面和小游戏设计;第10~12章介绍数据存储和显示、Qt图表以及Qt数据可视化等内容,因为Qt涉及的应用领域众多,本书选取了常用的数据处理来重点讲解;第13章介绍多媒体应用,其中包含音视频播放以及拍照、视频录制等内容;第14章介绍QML和C++的集成开发,学习完本章可以更好地将Qt Widgets程序和Qt Quick程序进行融合。读者可以先学习前8章的内容,然后循序渐进地学习其余章节;有Qt编程基础的读者,可以根据需要进行选择性学习。对于QML语言,读者可以在编程实践中学习。本书没有将QML语法介绍单独作为一章,而是将其放到了附录中,读者可以在需要时自行查阅。

本书还配套了精心设计的课件PPT和实验讲义。囿于篇幅,很多图片和流程性的内容无法过多展示,但是通过600余页的PPT和8组实验,对书本内容进行了扩展,例如,书中未出现的MySQL数据库的安装与使用、Android平台开发环境构建等内容,以及两个综合实例,都予以了补充。

本书为每一个知识点都设计了一个示例程序,而且列出了详细的项目构建过程,即便是初学者也可以根据书本内容轻松开发自己的应用。在学习过程中,笔者建议读者多动手,尽量自己按照步骤编写代码,当遇到自己无法解决的问题时,再去参考本书提供的源代码。每学习一个知识点,本书都会给出Qt帮助中的关键字——建议读者详细阅读Qt帮助文档,看看英文原文是如何描述的。不要害怕阅读英文文档,因为很难在网上找到所有文档的中文翻译;有时即使有中文翻译,也可能偏离原意,所以最终还是要自己去读原始文档。只要坚持,掌握了一些英文术语和关键词以后,阅读英文文档就不成问题。Qt文档非常详细,学会查看参考文档是入门Qt编程的重要一步。

书中使用的Qt版本的说明

为了避免使用不同的操作系统而产生不必要的问题,建议读者使用本书采用的Windows 10操作系统。这里要向对Qt版本不是很了解的读者说明一下,对于Qt程序开发,只要没有平台相关的代码,无论是在Windows系统下进行开发还是在Linux系统下进行开发,无论是进行桌面程序开发还是进行移动平台或者嵌入式平台的开发,都可以做到编写一次代码,然后分别进行编译。这也是Qt最大的特点,即所谓的“一次编写,随处编译”。当然,这一特点要求没有平台相关代码。不过,对于本书讲述的基本内容,读者只需要学好知识,然后编写代码,在不同系统使用不同的Qt版本进行移植、编译即可。

在学习本书时,推荐大家使用指定的Qt和Qt Creator版本,因为对于初学者来说,任何微小的差异都可能导致错误的理解。当然,这不是必需的。

致谢

首先要感谢王峰松老师的信任和支持,他给了我很多有益的建议和充足的时间,确保了书稿和配套内容的质量。其次要感谢那些关注和支持我的朋友,是他们的一路支持和肯定,才让我有了无穷的动力。最后要感谢曾对本书内容做出贡献的周慧宗、董世明、程梁(豆子devbean)等。得益于众多好友的帮助和支持,本书才可以在最短时间内以较高的质量呈现给广大读者。

由于作者技术水平有限,Qt 6中又是全新的技术和概念,并且没有统一的中文术语参考,因此书中难免有各种理解不当和代码设计问题,恳请读者批评指正。读者可以到Qt开源社区下载本书的源码,查看与本书对应的不断更新的系列教程,也可以与作者进行在线交流和沟通,我在Qt开源社区等待大家。

作 者  

资源与支持

资源获取

本书提供如下资源:

配套源代码;

课件PPT;

实验讲义;

综合实例设计;

教学大纲及教学计划。

要获得以上资源,扫描下方二维码,根据指引领取。

提交错误信息

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区(https://www.epubit.com),按书名搜索,进入本书页面,单击“发表勘误”,输入错误信息,单击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的错误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

与我们联系

我们的联系邮箱是wujinyu@ptpress.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。

如果您所在的学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发送给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书

“异步社区”(www.epubit.com)是由人民邮电出版社创办的IT专业图书社区,于2015年8 月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。

“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域多年来的发展与积淀。异步图书面向IT行业以及各行业使用IT技术的用户。

第1章 开始Qt 6编程

Qt是一个完整的跨平台软件开发框架,其致力于简化桌面、嵌入式和移动平台的应用程序和用户界面的开发。经过30余年的发展,现在全球70多个行业数以亿计的设备和应用在使用Qt。最新版本Qt 6是面向未来的生产力平台,可以使用同一套工具设计、开发2D和3D用户界面,实现下一代用户体验。

本章将从Qt的历史、特色开始,对Qt的两大界面开发技术、Qt Creator以及几个常见的Qt工具进行详细介绍,带领读者全面了解Qt。通过本章内容的阅读,读者将对Qt有一个整体的认识,为学习本书后面的知识打下良好的基础。

1.1 Qt概述

Qt是一个跨平台的应用程序和UI开发框架。使用Qt只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统编译部署这些应用程序。Qt默认的IDE(Integrated Development Environment,集成开发环境)是Qt Creator,它是一个全新的跨平台Qt IDE。Qt Creator是由Qt构建的,可单独使用,也可与Qt库和开发工具组成一套完整的SDK(Software Development Kit,软件开发工具包),其中包括高级C++代码编辑器、项目和生成管理工具、集成的上下文相关的帮助系统、图形化调试器、代码管理和浏览工具等。Qt本身是一个C++开发框架,前期只有C++ Widgets一种开发技术,直到Qt 4.7引入了一种高级用户界面技术Qt Quick,该技术更便于开发人员和设计人员协同创建动态触摸式用户界面和应用程序。

1.1.1 Qt的历史

1995年,挪威的奇趣科技公司(Trolltech)的两位创始人Haavard Nord和Eirik Chambe-Eng合作开发了Qt框架,并于当年5月发布了Qt第一个公开版本。初版Qt只有两个版本:适用于类Unix平台的Qt/X11和适用于Windows平台的Qt/Windows。

2001年年底,奇趣科技发布了Qt 3,增加了对macOS X平台的支持。2005年6月,奇趣科技发布了Qt 4。这是一个全新的版本,与之前的3.x系列不仅二进制不兼容,甚至API也不兼容。

2008年6月,诺基亚宣布完成对Trolltech的收购。同年,诺基亚将Qt的名字更改为Qt Software,然后又更改为Qt Development Framework。在诺基亚的领导下,Qt的工作重心由桌面系统转移至诺基亚旗下的手持设备。2009年5月11日,诺基亚宣布Qt源代码在著名的Git托管平台Gitorious面向公众开放,这标志着Qt正式成为面向社区的开源框架。

2009年3月,Qt 4.5发布,这是Qt被诺基亚收购后发布的首个全新版本,同时发布的还有全新的跨平台集成开发环境Qt Creator 1.0。另外,Qt还首次提供了可与现存的商业授权和GPL授权并行的 LGPL授权。2009年12月,Qt 4.6发布,首次包含了对Symbian平台的支持。2010年9月,Qt 4.7发布,引入了一种全新的高级用户界面技术Qt Quick和一种声明式编程语言QML,用于为移动和嵌入设备创建动态触摸式用户界面和轻量级应用程序。

2011年2月,诺基亚宣布放弃自己的Symbian平台,转而投向微软公司的Windows Phone平台。2011年3月,Digia(一家总部位于芬兰的IT业务供应商)与诺基亚公司签署协议,收购Qt商业许可证和服务业务。2012年,Digia从诺基亚收购Qt软件技术和Qt业务。收购完成后,Digia负责之前诺基亚开展的所有Qt业务,包括研发、商业许可证、开源许可证和专业服务等业务。Digia宣布将努力促使Qt支持Android、iOS和Windows Phone三大平台,并且继续关注桌面和嵌入式平台的开发。这意味着Qt正在努力成为一个全平台的开发框架。

2012年12月,Qt 5正式发布,这是继Qt 4之后的另一个大的升级。Qt 5引入了全新的硬件加速图形处理,并且将QML和Qt Quick提升到与C++等同的地位。传统的基于C++的Qt Widgets仍将继续获得支持,但是全新的架构所带来的性能提升则更多作用于QML和Qt Quick。

2014年,Qt公司在Digia内部成立。2016年,Digia公司分拆业务,与Digia的Qt业务相关的所有资产、负债和责任都转移到了新设立的Qt公司。分拆后,Qt公司成为独立的上市公司。

2020年12月,Qt 6.0正式发布。为了适应不断发展的新技术和新需求,Qt 6在利用C++17、下一代QML、新的图形架构、Qt Quick统一2D和3D、完全支持CMake等核心重点领域进行了大量改进,目标是让Qt成为未来的生产力平台。早期的Qt 6版本在一些功能上并不完善。2021年9月,Qt 6的第一个长期支持版本Qt 6.2 LTS发布,这是第一个推荐入门使用的Qt 6版本。

1.1.2 Qt的特色

作为一个跨平台的应用程序开发框架,Qt 6系列和Qt庞大的生态系统为微控制器(MCU)到超级计算机等各种硬件、操作系统或裸机,提供了整个产品线的设计和原型实现、开发和编码、调试和测试、部署和维护等所需的一切。整体来说,Qt主要具有如下特色。

支持跨平台开发:Qt可以“一次开发、任意部署”,可以在Linux、Windows或macOS上设计、开发一套代码,然后交叉编译到各种操作系统或裸机上进行部署,目标平台包括桌面平台(Linux/X11、macOS、Windows)、移动平台(Android、iOS)、嵌入式平台(Android Automotive OS、webOS OSE、嵌入式Linux、实时操作系统INTEGRITY和QNX)、Web平台(WebAssembly)等。

配套工具齐全:Qt拥有众多全流程的设计开发工具,可以为项目简化每一步工作流程。不仅有可供设计师和开发者无缝协作的Qt Design Studio,还有跨平台的集成开发环境Qt Creator,可以帮助用户编写代码,完成构建、编译、本地化等任务。另外,Qt还有众多质量管理工具和部署工具,能够为整个软件生命周期提供全面保障。

拥有丰富的API:Qt包含一整套高度直观、模块化的C++库类,拥有丰富的API,可简化应用程序的开发。Qt具有跨平台的基本组件和功能全面的扩展模块,涉及图形界面、网络、数据库、音视频、3D、图表、XML、数据可视化、Web等众多领域。Qt能生成高可读性、易维护和可重用的代码,具有较高的运行效率,且内存占用小。

支持多种语言:Qt支持不同的开发语言,包括C++、QML和Python等。基于C++的Qt Widgets用于创建复杂的桌面应用程序;而基于声明式UI语言QML的Qt Quick用于创建流畅、动态的移动触摸界面程序,还可以使用JavaScript进行逻辑业务描述;Qt for Python可以通过Python进行Qt程序开发。

开源且永不过时:Qt根植于开源,其开源社区由全球150多万名开发者组成。Qt的成功部分归功于其强大的社区,社区通过发现和修复bug,并通过共享其软件开发项目的各种特性来添加Qt代码库,从而提高了开发框架的质量。强大且活跃的社区让Qt蓬勃发展,使得Qt生态系统可以为项目的未来保驾护航。

1.1.3 Qt软件开发框架介绍

Qt包含一整套高度直观、模块化的C++类库,拥有丰富的API,可简化应用程序的开发。Qt的模块可以分为Qt基本模块(Qt Essentials)和Qt扩展模块(Qt Add-Ons),整个开发框架如图1-1所示。

图1-1 Qt软件开发框架示意图

Qt基本模块定义了Qt在所有平台上的基本组件,在所有Qt支持的开发平台和经过测试的目标平台上都可以使用。其中的API和库是Qt的基石,相关模块如表1-1所示。

 表1-1 Qt基本模块

模 块 名 称

描 述

Qt Core

供其他模块使用的非图形核心类

Qt GUI

图形用户界面组件的基类,包括OpenGL

Qt Widgets

用C++ Widget扩展Qt GUI的类

Qt QML

定义并实现了QML语言,也包含相关C++ API

Qt Quick

QML的标准组件库,用于构建具有自定义用户界面的动态应用程序

Qt Quick Dialogs

包含一些用于在Qt Quick中创建系统对话框并与之交互的类型

Qt Quick Layouts

包含一些用于在Qt Quick用户界面中排列布局项目的类型

Qt Quick Controls

为桌面、嵌入式和移动设备创建高性能用户界面提供的轻量级QML控件类型。这些控件采用简单的样式架构,非常高效

Qt Quick Test

QML应用程序的单元测试框架,其中测试用例被写成JavaScript函数

Qt Test

用于Qt应用程序和库进行单元测试的类

Qt Network

网络相关的类,能够让网络编程更加简单和易于移植

Qt D-Bus

通过D-Bus协议进行进程间通信的类

Qt是一个涉及众多领域的全面框架,除了基本模块,还包含了许多扩展模块,旨在为使用者提供真正的专业开发体验。Qt包含数十种扩展模块,常用的一些扩展模块如表1-2所示。

 表1-2 Qt常用的扩展模块

模 块 名 称

描 述

Qt Multimedia

音频、视频、收音机和相机相关功能的类

Qt Multimedia Widgets

Qt多媒体子模块,包含用于实现多媒体功能的基于Widget的类

Active Qt

该模块的类能够使应用程序调用ActiveX 和COM 接口

Qt 3D

支持2D和3D渲染的近实时仿真系统的功能

Qt Bluetooth

提供对蓝牙硬件的访问

Qt Concurrent

可在不调用底层Qt原始多线程框架的情况下实现多线程功能

Qt Help

用于将文档集成到应用程序中的类,类似Qt Assistant

Qt Image Formats

支持其他图像格式(TIFF、MNG、TGA和WBMP等)的插件

Qt Print Support

该模块的类能够让打印更加简单和易于移植

Qt Quick Widgets

提供一个用于显示Qt Quick用户界面的C++ Widget类

Qt SCXML

提供从SCXML文件创建状态机并将其嵌入应用程序的类和工具

Qt Sensors

提供对传感器硬件和动作手势识别的访问

Qt Serial Bus

提供对串行工业总线接口的访问。目前该模块支持CAN总线和Modbus协议

Qt Serial Port

提供对硬件和虚拟串行端口的访问

Qt SVG

用于显示SVG文件内容的类。支持SVG 1.2 Tiny标准的一个子集

Qt WebChannel

提供从HTML客户端对QObject或QML对象的访问,以实现Qt应用程序与HTML/JavaScript客户端的无缝集成

Qt WebEngine

用于在使用Chromium浏览器项目的应用程序中嵌入网络内容

Qt WebSockets

提供符合RFC 6455的WebSocket通信

Qt WebView

通过使用平台自带的API在QML应用程序中显示网页内容,而不需要包含完整的网页浏览器栈

Qt XML

XML相关的类,提供SAX和DOM的C++实现

Qt SQL

使用SQL进行数据库集成的相关类

Qt Charts

用于展示视觉效果良好的图表的UI组件,由静态或动态数据模型驱动

Qt Data Visualization

用于创建酷炫的3D数据可视化的UI组件

Qt Virtual Keyboard

实现不同输入方法的框架以及QML虚拟键盘

Qt Device Utilities

提供用于控制嵌入式应用程序中各种设置的功能

Qt Quick Timeline

启用基于关键帧的动画和参数化

Qt State Machine

提供用于创建和执行状态图的类

Qt Quick 3D

为创建基于Qt Quick的3D内容或UI提供了一个高级API

Qt Quick 3D Physics

提供了一个高级QML模块,为Qt Quick 3D添加了物理模拟功能

Qt PDF

包含用于显示PDF文件的类

1.1.4 Qt的授权

对于应用程序开发,Qt提供了商业和开源许可证下的双重许可证。商业许可证包含了根据自己的条件创建和分发软件的全部权利,无须承担任何开源许可义务,还可以获得官方的技术支持。Qt也可以在GPL和LGPLv3开源许可证下使用,不过,Qt工具和一些库仅在GPL下可用。Qt开源许可非常适合开源项目、学术目的或者学生学习使用等项目。用户可以在Qt官网查看Qt授权的详细信息,也可以在安装Qt时查看LGPLv3等许可证的详细内容。

1.1.5 Qt Quick和QML介绍

Qt Quick作为一种新的界面技术,已经经过了十几年的发展。对于初学者而言,其实只需要学习最新版本的Qt Quick即可。不过为了避免被一些以前的术语或概念影响,读者可以先了解一下Qt Quick的由来和发展过程,今后如果看到一些相关名词,知道其作用即可。

1.由来和发展

自2005年Qt 4发布以来,Qt已成功在桌面和移动系统开发了众多应用。但是随后几年,计算机用户的使用模式发生了翻天覆地的变化:用户逐步从使用固定的PC转换到使用便携式计算机和现代移动设备。传统的桌面系统被越来越多的触屏式智能手机和平板电脑所取代,经典的窗口界面时代已经成为过去。使用Qt的经典C++代码实现兼容不同大小屏幕的程序变得愈加困难。在这样的背景下,急需一种全新的界面开发工具适应现代化界面开发工作。

Qt 4被设计用来开发适用于所有主流平台的桌面应用。为了给所有的主流桌面和移动系统提供基于触摸的现代化用户界面,从2010年发布的Qt 4.7开始引入了Qt Quick技术。当时对Qt Quick的定义为:“一种高级用户界面技术,可以轻松创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。”Qt Quick主要由一个改进的Qt Creator IDE(其中包含了Qt Quick设计器)、新增的简单易学的QML(Qt Meta-Object Language,Qt元对象语言)和新加入Qt库中名为QtDeclarative的模块等三部分组成。这些使得QML更方便不熟悉C++的开发人员和设计人员使用。

Qt 4中,QML应用使用图形视图框架渲染;Qt 5则改为使用更先进、性能更好的OpenGL场景图架构。由于渲染架构的改变,Qt 5废弃了QtDeclarative模块,将所有Qt Quick的内容划分为两个相对独立的模块:Qt QML和Qt Quick。基于兼容性目的,QtDeclarative模块一开始并没有完全移除,而是被移动到新的Qt Quick 1模块中。这个模块只是为向前兼容而存在,到Qt 5.6发布时已经被彻底移除。相对于Qt Quick 1,Qt 5中的Qt Quick模块是2.x版本,所以也被称为Qt Quick 2。

2.Qt 6中QML的概念

QML是一种用于描述应用程序用户界面的声明式编程语言,它使用一些可视组件以及这些组件之间的交互和关联来描述用户界面。QML是一种高可读性的语言,可以使组件以动态方式进行交互,并且组件在用户界面中可以很容易地实现自定义和重复使用。QML允许开发者和设计者以类似的方式创建具有流畅动画效果、极具视觉吸引力的高性能应用程序。

QML提供了一个具有高可读性的类似JSON的声明式语法,并提供了必要的JavaScript语句和动态属性绑定的支持。QML语言和引擎框架由Qt QML模块提供。Qt QML模块为QML语言开发应用程序和库提供了一个框架,它定义并实现了语言及其引擎架构,并且提供了一个接口,允许应用开发者以自定义类型和集成JavaScript、C++代码的方式来扩展QML语言。Qt QML模块提供了QML和C++两套接口。

3.Qt 6中Qt Quick的概念

广义上来说,Qt Quick是Qt中基于QML语言的一种用户界面技术的统称,它是QML、JavaScript和C++等多种技术的集合。具体来说,在Qt框架中Qt Quick模块是QML类型和功能的标准库,包含了可视化类型、交互类型、动画、模型、视图、粒子特效和渲染特效等。

在QML应用程序中,我们可以通过一个简单的import语句来使用Qt Quick模块提供的所有功能。Qt QML模块提供了QML的引擎和语言基础,而Qt Quick模块提供了QML创建用户界面所需的所有基本类型。Qt Quick模块提供了一个可视画布,并提供了丰富的类型,用于创建可视化组件、接收用户输入、创建数据模型和视图、生成动画效果等。Qt Quick模块提供了两种接口:使用QML语言创建用户界面的QML接口和使用C++语言扩展QML的C++接口。使用Qt Quick模块,设计人员和开发人员可以轻松地构建流畅的动态式QML用户界面,并且在需要的时候将这些用户界面连接到任何C++后端。

从Qt 5.7开始,Qt Quick引入了一组界面控件,使用这些控件可以更简单地创建完整的应用界面。这些控件包含在Qt Quick Controls模块中,包括各种窗口部件、视图和对话框等。

1.2 如何选择Qt Widgets和Qt Quick

Qt 6包含两种用户界面技术:Qt Quick和Qt Widgets。Qt Quick开发的界面流畅、动态,适合于触摸界面;而Qt Widgets用于创建复杂的桌面应用程序。Qt Quick最早出现在Qt 4.7版本,作为一种全新的用户界面技术被引入,其目的就是应对现代化的移动触摸式界面。经过不断优化,直到Qt 5发布,Qt Quick才真正发展壮大,并且能够与Qt Widgets平分秋色。与Qt Widgets使用C++进行开发不同,Qt Quick使用QML来构建用户界面,并使用JavaScript来实现逻辑。

本节对Qt 6中的Qt Quick和Qt Widgets两种技术进行对比介绍,让读者了解在实际编程中应该使用哪种技术。虽然二者存在区别,但是同样基于Qt核心理念进行开发,所以它们在功能实现上也存在着很多联系,本书后面的章节会对这两种技术进行对比讲解,读者在对比学习时可以看到两者是一脉相承的。

1.2.1 两者的区别

前文提到Qt Quick和Qt Widgets两种用户界面技术,对于初学者而言,选择哪种技术可能是一个头疼的问题,下面我们对两者进行多方面对比,如表1-3所示。

 表1-3 Qt Quick和Qt Widgets用户界面技术对比

对比内容

Qt Quick、Qt Quick Controls

Qt Widgets

备 注

使用的语言

QML/JS

C++

原生外观和视觉

Qt Widgets和Qt Quick Controls在目标平台上都支持原生的外观

自定义样式

Qt Widgets可以通过样式表进行样式自定义,Qt Quick Controls具有可自定义样式的选择

流畅的动画UI

Qt Widgets不能很好地通过缩放来实现动画,而Qt Quick通过声明方式提供了一种方便且自然的方法来实现动画

触摸屏支持

Qt Widgets通常需要使用鼠标指针来进行良好的交互,而Qt Quick提供了QML类型来完成触摸交互

标准行业小部件

Qt Widgets提供了构建标准行业类型应用程序所需的丰富部件和功能

模型/视图 编程

Qt Quick提供了方便的视图,而Qt Widgets提供了更方便和完整的框架。除了Qt Quick视图,Qt Quick Controls还提供了TableView控件

快速UI开发

Qt Quick是快速UI原型制作和开发的最佳选择

硬件图形 加速

Qt为Qt Quick界面提供了完整的硬件加速,而Qt Widgets界面通过软件进行渲染

图形效果

一些Qt Quick模块提供了图形效果,而Qt Widgets界面可以使用Qt GUI模块来实现一些图形效果

富文本处理

Qt Widgets为文本编辑器提供了全面的基础支持,Qt的富文本文档类也可以在Qt Quick和Qt Quick Controls的TextArea控件中使用,但可能需要一些C++实现

1.2.2 如何选择两种技术

Qt Quick用于创建动态和流畅的用户界面,而Qt Quick Controls提供了按钮、对话框和菜单等控件,不仅可以用来开发移动应用程序,也可以用来开发桌面应用程序。

Qt Widgets包含了桌面环境中常见的用户界面小部件,这些小部件与底层平台很好地集成在一起,可以在Windows、Linux和macOS上提供原生外观。与Qt Quick不同,这些小部件适用于创建大型桌面应用程序,不太适合创建具有流畅界面的以触摸为中心的应用程序。

总体来说,Qt Quick是触摸界面应用的最佳选择。推荐使用Qt Quick的情况如下。

使用短周期原型化设计。

在移动、嵌入式设备或MCU上运行。

在触摸屏上工作。

包含大量动画和图形效果。

Qt Widgets主要用于创建复杂的桌面应用程序。推荐使用Qt Widgets的情况如下。

大型标准工业应用。

仅在桌面上运行。

类似于本地Linux、macOS和Windows应用程序。

需要很好地集成到底层平台中。

1.3 Qt 6的下载和安装

本节通过下载和安装Qt 6,正式带读者开始Qt的学习之路。需要说明的是,本书使用的开发平台是Windows 10桌面平台,主要讲解Windows版本的Qt 6,使用其他平台的读者可以参照学习。为了避免因开发环境的版本差异而产生不必要的问题,我们推荐读者在学习本书前下载和本书相同的软件版本。本书使用Qt 6.5.0版本,其中包含了Qt Creator 10.0。

安装Qt和Qt Creator时,需要下载Qt Online Installer进行在线安装,读者可以到Qt官网下载,选择下载开源版(Downloads for open source users),然后进行下载。

下载完成后双击运行,首先出现的是欢迎界面,在这里需要登录Qt账户,如果没有,可以单击下面的“注册(Sign up)”进行注册,当然也可以到Qt官网进行注册。在安装文件夹选择界面,可以指定安装的路径(注意不能包含中文)。在选择组件界面,可以选择安装一些模块,鼠标指针移到一个组件上,可以显示该组件的简单介绍。这里主要选择了MinGW版本的Qt 6.5.0和一些附加库,建议初学者使用相同的选择,为了方便后面学习移动开发内容,读者也可以先勾选上“Android”选项,如图1-2所示(注意,读者可以直接安装最新版本,如果想安装和本书相同的版本,可以勾选右侧的“Archive”复选框后单击下面的“筛选”按钮。后期还可以使用Qt安装目录里的MaintenanceTool.exe工具添加或者删除组件)。后面的安装过程选择默认设置即可。

图1-2 Qt安装时选择组件的界面

组件中的MinGW表明该版本Qt使用了MinGW作为编译器。MinGW即Minimalist GNU For Windows,是将GNU开发工具移植到Win32平台下的产物,是一套Windows上的GNU工具集,用其开发的程序不需要额外的第三方DLL支持就可以直接在Windows下运行。在Windows系统中,用户还可以使用MSVC版本的Qt,需要使用Visual C++作为编译器。

1.4 Qt Creator开发环境简介

Qt Creator是一个跨平台的、完整的Qt集成开发环境,其中包括了C++ 和QML代码编辑器、项目和生成管理工具、集成的上下文相关的帮助系统、图形化调试器、代码管理和浏览工具等。

1.4.1 Qt Creator的特色

Qt Creator作为集成开发环境,从简洁明了的项目创建向导、功能完善的代码编辑器、上下文相关的帮助系统到丰富的项目版本控制等,为项目开发提供了所需要的一切。总体来说,Qt Creator包含以下特色。

支持多种系统平台:可以在Windows、Linux和macOS桌面操作系统上运行,并允许开发人员编译构建桌面、移动和嵌入式平台应用程序。通过构建设置可以轻松地在目标之间切换。

强大的代码编辑器:可以在Qt Creator代码编辑器上使用C ++、QML、JavaScript、Python和其他语言编写代码,具备代码补全、语法突出显示、代码重构等功能。

简明的向导和丰富的示例:在Qt项目向导的引导下,可以轻松创建项目;借助大量演示程序、代码示例和分布教程,可以帮助使用者快速入门。

所见即所得的UI设计工具:包括Qt设计师(Qt Designer)和Qt Quick设计师(Qt Quick Designer),前者用于Qt Widgets设计和构建图形用户界面,可以用带有传统C++ Qt API的表单快速设计和构建小部件和对话框;后者可以从头开始或基于现成的UI控件快速设计和构建Qt Quick应用程序和组件。

好用的帮助系统:集成了Qt助手(Qt Assistant),从而实现上下文相关的帮助系统,可以从编辑器一键进入关键字的帮助文档。格式清晰、内容详尽的帮助文档可以让使用者快速上手。

快速完成国际化:通过集成Qt语言家(Qt Linguist),可以方便快捷地将Qt C++和Qt Quick应用程序翻译成本地语言。

方便的项目和版本管理:无论导入现有项目,还是从头开始创建一个项目,Qt Creator都能生成所有必要的文件,包括支持CMake和用qmake进行交叉编译。

丰富的调试和性能分析:集成调试器和性能分析器,对于C++代码,支持设置断点、单步调试和远程调试等功能;对于QML应用程序,通过时间线和火焰图,可以由CPU和内存使用情况的可视化表示快速识别性能瓶颈。

支持多种版本控制:Qt Creator集成了大多数流行的版本控制系统,包括Git、Subversion、Perforce和Mercurial等。

1.4.2 Qt Creator界面介绍

打开Qt Creator,其界面如图1-3所示。它主要由主窗口区、菜单栏、模式选择器、构建套件选择器、定位器和输出窗口等部分组成,简单介绍如下。

图1-3 Qt Creator界面

1.菜单栏(Menu Bar)

菜单栏中有9个常用的功能菜单。

“文件”菜单:包含新建、打开和关闭项目或文件、打印及退出等基本功能菜单。

“编辑”菜单:这里有撤销、剪切、复制、查找和选择编码等常用功能菜单,在“高级”菜单中还有标示空白符、折叠代码、改变字号大小和使用vim风格编辑等功能菜单。这里的“Preferences”菜单包含了Qt Creator各个方面的设置选项:环境设置、文本编辑器设置、帮助设置、构建和运行设置、调试器设置和版本控制设置等。用户可以在环境设置的Interface页面设置用户界面主题。

“视图”菜单:包含控制侧边栏和输出窗口显示等相关菜单。

“构建”菜单:包含构建和运行项目等相关的菜单。

“调试”菜单:包含调试程序相关的功能菜单。

“分析”菜单:包含QML分析器、Valgrind内存和功能分析器等相关菜单。

“工具”菜单:这里提供了快速定位菜单、C++和QML/JS相关工具菜单、测试相关菜单以及Qt语言家等外部工具菜单等。

“控件”菜单:包含设置全屏显示、分栏和在新窗口打开文件等菜单。

“帮助”菜单:包含Qt帮助、Qt Creator版本信息、报告bug和插件管理等菜单。

2.模式选择器(Mode Selector)

Qt Creator包含欢迎、编辑、设计、调试、项目和帮助6种模式,各种模式完成不同的功能,也可以使用快捷键来切换模式,各自对应的快捷键依次是Ctrl+数字1~6。

欢迎模式。图1-3所示的就是欢迎模式,主要提供了一些功能的快捷入口,如打开帮助教程、打开示例程序、打开项目、新建项目、快速打开以前的项目和会话、联网查看Qt官方论坛和博客等。项目页面显示了最近打开的项目列表,可供用户在这里快速打开一个已有项目;示例页面显示了Qt自带的大量示例程序,并提供了搜索栏,可以实现快速查找;教程页面提供了一些基础的教程资源;Marketplace页面分类展示了Qt市场的一些内容,如Qt库、Qt Creator插件和马克杯及T恤等商品。

编辑模式。其主要用来查看和编辑程序代码,管理项目文件。Qt Creator中的编辑器具有关键字特殊颜色显示、代码自动补全、声明定义间快捷切换、函数原型提示、F1键快速打开相关帮助和全项目中进行查找等功能。也可以在“编辑→Preferences”菜单项中对编辑器进行设置。

设计模式。编写Qt Widgets程序时,用户可以在这里设计图形界面,进行部件属性设置、信号和槽设置、布局设置等操作。编写QML代码时,用户也可以使用Qt Quick Designer,以“所见即所得”的方式设计界面。通过“帮助→关于插件”菜单项打开已安装插件对话框,然后在其中勾选QmlDesigner项即可启用。

调试模式。对于C++代码,这里支持设置断点、单步调试和远程调试等功能,其中包含局部变量和监视器、断点、线程等查看窗口;对于QML代码,可以使用QML Profiler工具对QML代码进行分析。用户可以在“编辑→Preferences”菜单项中设置调试器的相关选项。

项目模式。其包含对特定项目的构建设置、运行设置、编辑器设置、代码风格设置和依赖关系设置等。构建设置中,用户可以对项目的版本、使用的Qt版本和编译步骤进行设置;编辑器设置中可以设置文件的默认编码和缩进等。

帮助模式。其包含目录、索引、查找和书签等导航模式,可以在帮助中查看和学习Qt和Qt Creator的各方面内容。可以在“编辑→Preferences”菜单项中对帮助选项进行相关设置。

3.构建套件选择器(Kit Selector )

构建套件选择器包含了目标选择器(Target selector)、“运行”按钮(Run)、“调试”按钮(Debug)和“构建”按钮(Building)4个图标。目标选择器用来选择要构建哪个项目、使用哪个Qt库,这对于多个Qt库的项目很有用;还可以选择编译项目的Debug版本、Profile版本或Release版本。单击“运行”按钮可以实现项目的构建和运行;单击“调试”按钮可以进入调试模式,开始调试程序;“构建”按钮用来完成项目的构建。

4.定位器(Locator)

定位器用来快速定位项目、文件、类、方法、帮助文档以及文件系统。可以使用过滤器来更加准确地定位要查找的结果。用户可以在帮助中通过Searching with the Locator关键字查看定位器的相关内容。

5.输出窗口(Output panes)

输出窗口包含了问题、搜索结果、应用程序输出、编译输出、QML Debugger Console、概要信息、版本控制、测试结果等8个选项,它们分别对应一个输出窗口,相应的快捷键依次是Alt+数字1~8。“问题”窗口显示程序编译时的错误和警告信息;“搜索结果”窗口显示执行搜索操作后的结果信息;“应用程序输出”窗口显示在应用程序运行过程中输出的所有信息;“编译输出”窗口显示程序编译过程输出的相关信息;“版本控制”窗口显示版本控制的相关输出信息。

1.5 运行一个示例程序

前文提到,欢迎界面提供了丰富的Qt示例程序,在学习使用Qt之前,用户可以通过这些示例程序了解Qt的功能,在后续学习中也可以借鉴这些示例程序的代码,进而快速实现某一方面的应用。欢迎界面提供的示例程序几乎涉及了Qt支持的所有功能,当然用户也可以在搜索栏查找关键字。本节将分别运行一个Qt Widgets示例程序和一个Qt Quick示例程序,让读者对两种应用有一个直观的认识。

1.5.1 运行Qt Widgets示例程序

其实,除了Qt Quick应用,大部分应用都可以称为Qt Widgets应用,这里为了查看比较典型的Widgets应用,我们在搜索栏中输入“widgets”关键字,结果如图1-4所示。

图1-4 widgets相关示例程序

如果单击选择经典的“Text Edit”示例程序,这时会跳转到项目模式进行套件选择,因为这里现在只有一个Desktop Qt 6.5.0 MinGW 64-bit构建套件,所以直接单击“Configure Project”按钮即可。关于构建套件,用户可以通过“编辑→Preferences”菜单项打开首选项对话框进行设置。安装好Qt后会默认设置一个构建套件,其中包含了Qt版本、编译器、调试器等设置,如果以后需要使用多个Qt版本或者编译器,那么用户可以手动设置构建套件。

下面我们进入编辑模式。每当打开一个示例程序,Qt Creator会自动打开该程序的项目文件,然后进入编辑模式,并且打开该示例的帮助文档。用户可以在编辑器左上角的项目树形视图中查看该示例的源代码。现在单击左下角的“运行”按钮或者按下Ctrl + R快捷键,则程序开始编译运行,相关信息会显示在下面的“编译输出”和“应用程序输出”窗口中。“Text Edit”示例程序运行效果如图1-5所示。

图1-5 “Text Edit”示例程序运行效果

不建议直接修改示例程序的代码。如果用户想根据自己的需求进行更改,则应该先对项目进行备份。用户可以通过Qt安装路径查找示例程序目录,也可以在编辑模式左侧项目树形视图中的文件(例如main.cpp)上右击,然后从弹出的菜单中选择“在Explorer中显示”,这样就会在新窗口中打开该项目目录。可以先将该目录进行备份,然后再运行备份程序进行修改等操作。

要关闭一个项目,可以通过“文件→Close Project”菜单项,也可以直接在编辑模式左侧项目树形视图中的项目目录上右击,然后从弹出的子菜单中选择“关闭项目”菜单项。

1.5.2 运行Qt Quick示例程序

要查找Qt Quick相关示例程序,可以在搜索栏中输入“quick”关键字,然后选择一个比较感兴趣的示例程序,比如“Coffee Machine”。在编辑模式下,用户可以查看该示例的源代码,以.qml为扩展名的文件就是QML文件,读者可以对比一下其C++和QML代码实现。程序运行效果如图1-6所示。可以看到,Qt Quick应用的界面非常漂亮,并且其中的动画、滑动等效果在传统Qt Widgets程序中是很难实现的。

图1-6 “Coffee Machine”示例程序运行效果

1.6 帮助模式

按下Ctrl+6快捷键,即可进入帮助模式。在左上方的目录栏中单击“Qt 6.5.0 Reference Documentation”,打开Qt参考文档页面,这里的分类几乎涵盖了Qt的全部内容,如图1-7所示。

图1-7 Qt参考文档

在“Reference”分类中,有C++类、QML类型、Qt模块和Qt参考文档,这里是整个Qt框架的索引。在“Getting Started”分类中,“Introduction to Qt”对Qt 6进行了简单介绍;“Getting Started”给出了初学者开始Qt学习的入门引导;“Examples and Tutorials”包含了Qt所有的示例程序和入门教程,可帮助初学者进行Qt开发;“Supported Platforms”通过表格形式展示了Qt对各个系统平台和编译器的支持情况;“Qt Licensing”对Qt的授权方式进行了介绍。在“Overviews”分类中,Qt最重要的内容按领域给出,如Development Tools、User Interfaces等。

按下快捷键Ctrl + M,或者单击界面上方边栏图标,就可以在帮助中添加书签。打开帮助模式时默认是目录视图,帮助的工具窗口还提供了“索引”“查找”和“书签”3种方式对文档进行导航,如图1-8所示。在索引方式下,用户只要输入关键字,就可以得到相关内容的列表;在查找方式下,可以输入关键字在整个文档的所有文章中进行全文检索;在书签方式下,可以看到以前添加的书签,双击书签就能快速打开对应的文档。

图1-8 帮助导航模式

还有一种快速打开帮助文档的方式,那就是在编辑模式下编写代码时,将鼠标指针图标移至类型或者函数上,这时会弹出工具提示,如图1-9所示,然后按下F1键就可以在编辑器右侧快速打开其帮助文档,再次按下F1键或者单击上方“Open in Help Mode”按钮都可以在帮助模式打开该文档。注意,本书涉及的关键字查找,如果没有特别说明,都是指在索引方式下进行的。关于帮助模式的使用,用户可以在帮助中通过Using the Help Mode关键字查看。

图1-9 在编辑模式下编写代码时弹出工具提示

1.7 Qt工具简介

Qt会默认安装几个实用的工具,它们分别是Qt Assistant(Qt助手)、Qt Designer(Qt设计师)和Qt Linguist(Qt语言家)。用户可以从“开始”菜单启动它们,也可以在安装路径下找到它们。笔者这里的安装路径是C:\Qt\6.5.0\mingw_64\bin。这些工具都已经很好地整合到了Qt Creator中。另外,还有一个Qt Design Studio工具,可以让设计师轻松将设计的2D或3D界面直接转换为QML代码。本节将对这几个工具进行简单介绍。

1.7.1 Qt Assistant

Qt Assistant是可配置且可重新发布的文档阅读器,可以方便地进行定制,并与Qt应用程序一起进行发布。Qt Assistant已被整合至Qt Creator,即前文介绍的Qt帮助。其功能如下。

定制Qt Assistant,并与应用程序一起重新发布。

快速查找关键词、全文本搜索、生成索引和书签。

同时为多个帮助文档集合建立索引并进行搜索。

在本地存放文档或在应用程序中提供在线帮助。

1.7.2 Qt Designer

Qt Designer是强大的跨平台GUI布局和格式构建器。由于Qt Designer使用了与应用程序中将要用到的相同的部件,因此可以使用屏幕上的格式快速设计、创建部件以及对话框。使用Qt Designer创建的界面样式功能齐全并可以进行预览,这样就可确保其外观完全符合要求。其功能和优势如下。

使用拖放功能快速设计用户界面。

定制部件或从标准部件库中选择部件。

以本地外观快速预览格式。

通过界面原型生成C++或Java代码。

将Qt设计师与Visual Studio或Eclipse IDE配合使用。

使用Qt信号和槽机制构建功能齐全的用户界面。

1.7.3 Qt Linguist

Qt Linguist提供了一套加速应用程序翻译和国际化的工具。Qt使用单一的源码树和单一的应用程序二进制包就可同时支持多个语言和书写系统。其主要功能如下。

收集所有UI文本,并通过简单的应用程序提供给翻译人员。

语言和字体感知外观。

通过智能的合并工具快速为现有应用程序增加新的语言。

采用Unicode编码,支持世界上大多数字母。

运行时可切换从左向右或从右向左的语言。

在一个文档中混合多种语言。

1.7.4 Qt Design Studio

Qt Design Studio是一个可视化的用户界面(UI)设计构成工具,可以让素材变成一个可运行的UI构成。简单来说,就是该工具填补了设计师与开发者之间的鸿沟,让设计师可以将设计的2D或3D界面直接转换为QML代码。另外,可以将Photoshop等设计软件创建的UI直接导入Qt Design Studio。Qt Design Studio的功能和特色如下。

轻松融合2D和3D。利用对2D和3D图形的原生支持,将UI设计提升到全新的维度,无缝地混合、制作动画,而无须区分2D和3D。支持所有主流的3D创作工具,如Maya、Blender和3D Max等,可以将3D元素轻松导入设计中。

可以利用现成组件。通过使用现成的组件库来节省时间和精力,组件库包含简单的形状和复杂的UI组件。还可以直接在工具中创建和编辑粒子效果,例如火焰或火花等。

可以通过真实硬件快速迭代。将设计快速转换为交互式原型制作,并在目标硬件上验证、迭代。开发者可以将功能性UI整合进应用程序。构建的内容均可跨平台,编译到任何硬件或操作系统环境中。

自动化生成代码。可以为设计生成功能完善的代码,让开发者不必编写任何多余的代码。使用Figma、Adobe XD或Adobe Photoshop等设计工具创建的UI设计,可以直接进行导入,新的素材和设计会自动生成代码供开发者使用。

1.8 关于本书源码的使用

在本书的编写过程中,每个示例开始都明确注明了项目源码的路径,可供读者到Qt开源社区的下载页面下载本书源码。所有的源码都放在了src文件夹中,读者可以根据书中的提示找到对应的源码目录。书中使用“示例2-1”这样的方式来指定一个例子,对应的项目源码路径表示为“src\02\2-1\”。

找到对应的源码后,读者可以直接双击.pro文件在Qt Creator中打开项目;也可以使用Qt Creator的“文件→打开文件或项目”菜单项打开源码中的.pro项目文件;还可以直接将源码目录中的.pro文件拖入Qt Creator界面来打开,打开后在项目模式重新选择构建套件。

1.9 小结

本章简单介绍了Qt的历史、特色以及Qt Widgets和Qt Quick两种用户界面技术,并对使用Qt Creator运行示例程序进行了演示。本章旨在让读者了解如何使用Qt帮助,因为后续章节里的很多知识点涉及使用帮助索引来查找关键字。现在读者对Qt及Qt Creator已经有了一个大概了解,对于更加详细的内容,我们会在后续章节中展开介绍。

1.10 练习

1.简述Qt的历史和特色,谈谈自己对Qt的看法。

2.熟悉一些常用的Qt基本模块和Qt扩展模块。

3.简述Qt Widgets和Qt Quick的区别,掌握如何选择这两种技术。

4.掌握Qt的安装方法。

5.熟悉Qt Creator开发环境,掌握运行示例程序的方法。

6.掌握Qt帮助的使用方法。

7.了解Qt Assistant、Qt Designer等Qt工具。

相关图书

CMake构建实战:项目开发卷
CMake构建实战:项目开发卷
代码审计——C/C++实践
代码审计——C/C++实践
C++现代编程技术写给工程师的C++教程
C++现代编程技术写给工程师的C++教程
C++ Templates(第2版)中文版
C++ Templates(第2版)中文版
C++设计模式
C++设计模式
C/C++代码调试的艺术(第2版)
C/C++代码调试的艺术(第2版)

相关文章

相关课程