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

《Qt 6 C++开发指南》提供4个版本的示例程序

《Qt 6 C++开发指南》包含丰富的示例项目,为了方便读者使用《Qt 6 C++开发指南》学习Qt编程,本书提供了4个版本的示例程序。读者可在人民邮电出版社异步社区本书的配套资源(如图1)里下载这4个版本的示例程序。

图1 异步社区本书配套资源下载界面

这4个版本的关系如图2所示。

图2 本书提供的4个版本的示例程序

1. 示例演示软件

功能和目的:这是一个可直接安装的软件,它集成了全书所有示例的可执行文件。目的是让读者无需编译源程序就可以运行示例,避免因为使用了不同的Qt版本而可能出现的编译错误,可以直观地了解示例的功能。

软件安装的初始界面如图3所示。

图3  示例演示软件的安装初始界面

软件安装完成后会在开始菜单和桌面上创建快捷方式,运行该软件即可浏览全书示例的文字简介和界面截图,双击一个示例节点就可以运行该示例的可执行文件。可直接对示例进行操作,以直观地了解示例的功能,如图4和图5。

图4 示例演示软件运行时画面

图5 示例演示软件运行时画面

2. qmake完整版源程序

功能和目的:这是全书示例项目的完整源代码,使用qmake构建系统管理项目。《Qt 6 C++开发指南》全书的内容就是针对这个版本的源代码进行讲解的。

qmake完整版源程序解压后的目录结构如图6所示。根目录下有一个版本说明文件,说明了软件版本和历史修改记录。

图6 qmake完整版源程序解压后目录结构

每一章是一个文件夹,包含了本章的所有示例项目。每个项目是一个文件夹,项目文件是后缀为pro的文件,在Qt Creator中打开项目就是打开.pro文件。

这些源程序都只保留了源代码,清理了构建项目时生成的临时文件,也删除了配置开发套件时所生成的后缀为.pro.user的项目用户配置文件。打开示例项目时会出现如图7所示的界面,要求配置项目的开发套件。选择需要使用的开发套件,点击Configure Project按钮即可。

图7 打开示例项目时提示配置项目使用的开发套件

3. qmake练习版源程序

功能和目的:这是为便于读者对照书的内容,自己动手练习编程的全书示例项目源代码。各示例一般只有项目框架和UI文件,h和cpp文件只有基本框架,没有完整的功能代码。

学习编程时总是有这样的问题:看一遍示例项目的完整代码,觉得是看懂了,但是自己动手编程时却还是不会。

所以,学习编程一定要自己动手编程试试。对于本书的示例项目,读者如果自己从头开始进行可视化的UI设计,UI界面上的组件命名和布局难免和书中示例的有差别,对照书中的讲解编程时难免遇到麻烦。因为本书几乎所有示例都采用Qt Designer进行UI可视化设计,对UI文件的介绍不多,重点放在程序的逻辑功能实现上。

qmake练习版源程序提供了每个示例的项目框架和设计好的UI文件,无需读者自己再从头设计UI文件,但是h和cpp文件只有基础结构。这样,读者可以根据书上的讲解,利用已经设计好的UI文件,在h和cpp文件中逐步添加代码实现程序功能。

UI可视化设计比较简单,仔细看看书上关于布局管理的介绍,设计过几个示例的UI界面后,就基本可以掌握UI可视化设计的技巧。

4. CMake完整版源程序

功能和目的:这是全书示例项目的完整源代码,使用CMake构建系统管理项目。以便想用CMake管理Qt项目的读者学习使用。

CMake完整版源程序解压后的目录结构如图8所示。

图8 CMake完整版源程序解压后目录结构

在Qt Creator中打开一个CMake管理的项目就是打开项目目录下的文件CMakeLists.txt。源代码中清除了构建过程中的临时文件,删除了用户项目配置文件CMakeLists.txt.user。在Qt Creator中首次打开文件CMakeLists.txt时,会出现如图7所示的配置项目的界面,选择开发套件进行配置接口。

图8中的文件“CMake管理项目使用方法汇总.pdf”详细总结了使用CMake管理Qt项目的一些使用方法,以及一些示例的使用注意事项。

对于CMake版本的源程序,需要注意以下问题。

  1. 这些示例中只用到了CMake的一些基本功能,读者不要指望从中学到CMake的所有技巧,这不是本书的重点。要学习CMake的所有技术,应该研读CMake的专业文档或专门介绍CMake的书籍。

  1. Qt中某些类型的项目目前还只能用qmake管理,而不能用CMake。如11.2节涉及到的Qt Designer Widget插件项目只能是qmake项目,18.3节涉及的Qt Installer Framework安装项目只能是qmake项目。

http://www.lryc.cn/news/42672.html

相关文章:

  • chartgpt 告诉我的,loss 函数的各种知识
  • 旅行推销员问题的遗传算法中的完整子路线顺序交叉
  • Python实现词频统计
  • 微信小程序面试题(day08)
  • 最强的Python可视化神器,你有用过么?
  • Ubuntu使用vnc远程桌面【远程内网穿透】
  • 【C++】map、set、multimap、multiset的介绍和使用
  • css学习14(多媒体查询)
  • 【C++进阶】C++11(中)左值引用和右值引用
  • Python中的生成器【generator】总结,看看你掌握了没?
  • MD5加密竟然不安全,应届生表示无法理解?
  • 【Linux】虚拟地址空间
  • 四平方和题解(二分习题)
  • 一篇文章搞定js正则表达式
  • [数据结构] 用两个队列实现栈详解
  • 官宣|Apache Flink 1.17 发布公告
  • 动态内存管理+动态通讯录【C进阶】
  • 基于pytorch+Resnet101加GPT搭建AI玩王者荣耀
  • 多线程控制讲解与代码实现
  • 清晰概括:进程与线程间的区别的联系
  • 自定义类型 (结构体)
  • 第14届蓝桥杯STEMA测评真题剖析-2023年3月12日Scratch编程初中级组
  • 程序员接私活一定要知道的事情,我走的弯路你们都别走了
  • 十二届蓝桥杯省赛c++(下)
  • 数据结构与算法——堆的基本存储
  • 来了来了 !!!K8s指令、yaml部署
  • spring-cloud-feign实战笔记
  • 【Pytorch】利用PyTorch实现图像识别
  • 在家查找下载最新《柳叶刀》The Lancet期刊文献的方法
  • 当下的网络安全行业前景到底怎么样?还能否入行?