目录
1. Qt 简介
什么是 Qt?
1.1 引入
1.2 GUI
1.3 Qt 介绍
2. Qt 发展史
3. Qt 支持的平台
4. Qt 版本信息
5. Qt 的优点
6. Qt 应用场景
7. Qt 成功案例
8. Qt 发展前景及就业分析
二. Qt 开发环境搭建
1. 开发工具概述
2.Qt SDK 安装
3.使用
1. Qt 简介
什么是 Qt?
Qt 是一个跨平台的 C++ 图形用户界面应用程序框架。
- 它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。
- 它是完全面向对象的,很容易扩展。
- Qt 为开发者提供了一种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应用程序,同时也可以使用 C++ 语言进行高级开发。
图形用户界面(GUI):指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。
1.1 引入
技术之间,具有非常强关联性
Qt 这个技术,用于进行“客户端开发”,属于前端开发中的“桌面运用开发”(电脑上的应用程序)
前置知识
- 客户端:直接和用户打交道的这一端的程序(steam,chrome......)
- 服务器:站在客户端背后的,提供支撑
- 虽然大部分的客户端程序,需要服务器。但有些程序不需要服务器,例如画图板...但同样也是直接和用户打交道,也可以称为“客户端程序”
介绍
- Qt 无法开发网页前端,也不能开发移动应用(目前支持了,但还没什么人用...
- 客户端开发的主要任务:编写和用户交互的页面
和用户交互的界面,两种典型风格:
- 命令行界面(黑框框)=>TUI
- 图形化界面=>GUI
Qt 是用来编写 桌面的 GUI 程序的一套框架
1.2 GUI
windows 下的 GUI 开发,基于 C/C++
- 提供的原生 API,开发起来非常原始,也非常繁琐
- MFC 上个世纪 90 年代,影响力还是非常深远的~~同时还有 VC6.0
- 面向对象的对 API 进行了封装,Qt(1991 年)诞生,和 MFC 不同,MFC 已经寄了,Qt 还在推陈出新,更新版本,至今任然非常有生命力
- 还有 GTK,WxWidget...
- 后来微软有了自己的语言,C#(sharp),量身定做了一套开发 GUI 技术体系~例如 WPF,UWP
开源社区推出了 Electron,本质是把基于 HTML 这样的网页,打包成一个 windows 上运行的客户端程序~
背景:Electron 这个技术体系,最初是用来开发“atom”文本编辑器的~Github 开发的,后来 atom 就寄了(因为微软推出了 vscode)
- 比较大的缺点:运行效率 还是比较低..
1.3 Qt 介绍
Qt 虽然只是上述解决方案中的其中一个,但用的公司还是挺多的
优点:能够跨平台~~(支持 Windows,macos,Linux)
- Qt 是一个 跨平台的 C++图形用户界面应用程序框架
- 框架:大佬开发出来,给普通程序员方便用的,限制程序员代码的自由~(就像围棋照着棋谱下,至少不会太差),在关键节点添加自己的代码
框架 vs 库
库和框架都是属于,大佬把一些代码写好了,让你去使用
不同点
- 库:被程序员调用(程序员是主体)
- 框架:则是占主体~程序员配合框架,完善填充框架中留出的一些细节
Java 对于框架,就更加依赖~Spring
编写 C++代码,框架当然也很重要,但 C++的生态是割裂的,离散的,不像 隔壁 Java,存在一些巨无霸社区,一统天下,C++不同的开源社区/大厂,各自有各自的框架,各自为政~
相比之下,Qt 这种,能够被大家共同认可的框架,在整个 C++生态中是不多见的
2. Qt 发展史
- 1991 年,在计算机,诞生了很多神奇的东西
比如 Qt,Python,Vim,OpenGL,Linux...
Qt 的发展
- 1991年:Qt最早由奇趣科技(Trolltech)开发;
- 1996年:进入商业领域,并成为目前流行的Linux桌面环境KDE的基础;
- 2008年:奇趣科技被诺基亚公司收购,Qt成为诺基亚旗下的编程工具;
诺基亚主推 Qt 来作为开发塞班系统应用程序的解决方案(最早的智能手机系统了)
2007 年,乔布斯发布苹果手机~标志移动互联网时代开启了
2012 年左右,iPhone4 称为一代经典,小米和华为也入场智能手机,安卓系统大规模崛起
诺基亚最后的反扑:和微软推出了 windows phone~撸没系列,没多久就没了
- 2012年:Qt被Digia公司收购;
- 2014年4月:跨平台的集成开发环境Qt Creator 3.1.0发布;同年5月20日,Qt 5.3正式版发布,至此Qt实现了对iOS、Android、Embedded等各平台的全面支持。
3. Qt 支持的平台
- Qt 支持的系统
- windows(各个版本)
- Linux,尤其是 Linux 中的 KDE 桌面基于 Qt 构建的
TUI vs GUI
Linux 主要是给服务器使用,服务器不需要图形界面
TUI,基于命令操作,门槛更高,效率也更高
GUI 基于图形化操作,门槛低,效率也低
3.Mac 系统
4.嵌入式系统
日常生活中冰箱,洗衣机,路由器...这些设备内部也有计算机,这种里面的硬件配置就不需要很高了,其中的图形化界面程序设计使用 Qt/安卓
4. Qt 版本信息
目前最新的版本是 Qt 6。但是,相对来说,Qt 6 和 Qt 5 之间的核心功能区别不大,并且企业中仍然有大量的项目在使用 Qt 5。因此后面主要用 Qt 5 来进行介绍
软件开发中,并不是越新越好,在商业软件开发中,引入新的性能,不如优先确保不引入严重的问题~
Qt 提供 商业许可 和 开源许可 两种授权方式。
- 商业许可:你想使用 Qt 开发一个程序,就可以向迪迦这个公司购买商业许可证(花钱,主要买的是技术支持!商业许可提供了更多的功能和服务)
比如:Redhat(收费 Linux 发行版)
比如,Oracle(收费的数据库)
- 开源许可:想开发一个程序,不必花钱,直接白嫖
5. Qt 的优点
- 跨平台支持广泛。
- 接口简单易学。
- 内存管理机制简化。
- 开发效率高。
- 社区活跃,市场份额增长。
- 支持嵌入式开发。
6. Qt 应用场景
- 桌面应用程序、移动应用程序、嵌入式系统等。
7. Qt 成功案例
(1)Linux 桌面环境 KDE
Linux 桌面环境中存在好几套桌面环境:
- GNOME(基于 GTK 创建)
- KDE(基于 Qt 创建)
(2)WPS Office 办公软件
(3)Skype 网络电话
Skype 是一款即时通讯软件,其具备 IM 所需的功能,比如视频聊天、多人语音会议、多人聊天、传送文件、文字聊天等功能。
它可以高清晰与其他用户语音对话,也可以拨打国内国际电话,无论固定电话、手机均可直接拨打,并且可以实现呼叫转移、短信发送等功能。
(4)Google Earth 谷歌地图
(5)VLC 多媒体播放器
(6)VirtualBox 虚拟机软件(VirtualBox 号称是最强的免费虚拟机软件)
8. Qt 发展前景及就业分析
- 行业发展方向包括 物联网、自动驾驶、智能交通、游戏开发等领域。
- 就业方面提供了广泛的职位选择和较高的薪资水平。
- 再去学安卓,ios 等图形化开发也会更加的容易上手
二. Qt 开发环境搭建
1. 开发工具概述
我们知道开发环境需要安装三个部分
1.C++编译器
2.Qt SDK(软件开发工具包)
3 . Qt 的集成开发环境(IDE)
主要开发环境有 Qt Creator(推荐)、Visual Studio 和 Eclipse。
- Qt 官方提供的 Qt Creator(最容易入门,比较方便,但有些 bug 影响使用体验)
- VS(功能更强,但需要额外的配置更多,安装 Qt 插件,把 Qt SDK 使用 VS 的编译器重新编译)
- Eclipse(并非只是 Jave IDE,可以搭配
说是安装三个东西,其实只要安装一个 Qt SDK,另外两个也就都有了
2.Qt SDK 安装
但凡需要下载安装一个程序,首选官方网站!!
Qt 下载官⽹:http://download.qt.io/archive/qt/国内清华源:https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/ 进⼊官⽹,按如下图⽰进⾏相应的系统版本下载即可。
选择需要下载的版本;
安装软件的时候,所在目录,不要中文,特殊符号
给装好的 Qt 配置一下环境变量
要添加的目录:包含动态库和 exe 的
❗ 不要从搜索框搜索“环境变量”进入环境变量设置,直接搜索的话是使用用户(user)身份进入的,所以只能设置用户环境变量
要从 控制面板--系统和安全--系统--高级系统设置--环境变量 进入环境变量设置,这样的路径是使用了管理员身份进入的,就可以设置系统环境变量了
为什么要设置环境变量?
- 环境变量 是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序将要用到的信息。
- 在Windows上设置Qt的环境变量是为了能够在命令行或者其他应用程序中直接访问Qt相关的命令和工具。
环境变量,也可以理解成一种简单的“进程间通信”机制,方便程序运行时,找到位置
之后我们在搜索菜单中输入 Qt,就可以看到如下 4 个文件:
对于官方文档:读英文文档,很重要,一步步静下心来
3.使用
- Qt 会借助你编写的代码,生成代码
2. 填写类信息设置界面
使用 Qt Creator 创建项目会自动生成一些代码出来,生成的代码就包含一个类,此处就是要选择这个自动生成的类的父类是什么。
⭕对于基类的选择,目前有三种基类:
💡这里生成的文件名是和类名关联的,这样的关联并非是强制的(但推荐这么做)。
上述三个类之间的关系如下图:
💡这个 Form file 非常关键,Qt 中创建图形化界面的程序有两种方式:
- 直接通过 C++ 代码的方式创建界面。
- 通过 Form file,以图形化的方式来生成界面。此时就可以使用 Qt Designer 或者直接使用 Qt Creator 来编辑这个 ui 文件,从而以图形化的方式快速方便的生成图像界面。
Qt 内置的类 都是以 Q 为前缀开头的。
3. 选择版本控制系统
点击 “下⼀步” 进入项目管理界面。在项目管理界面可以设置作为子项目,以及加⼊版本控制系统管理。这两个功能暂时用不到,都用默认的 <None> ,然后点击 “完成”。
sum:前期 我们先选择使用 Qwight,其余创建一个新的 qt 项目,就是一路 next 就好啦~