目录
[1. Qt 简介](#1. Qt 简介)
[什么是 Qt?](#什么是 Qt?)
[1.1 引入](#1.1 引入)
[1.2 GUI](#1.2 GUI)
[1.3 Qt 介绍](#1.3 Qt 介绍)
[2. Qt 发展史](#2. Qt 发展史)
[3. Qt 支持的平台](#3. Qt 支持的平台)
[4. Qt 版本信息](#4. Qt 版本信息)
[5. Qt 的优点](#5. Qt 的优点)
[6. Qt 应用场景](#6. Qt 应用场景)
[7. Qt 成功案例](#7. Qt 成功案例)
[8. Qt 发展前景及就业分析](#8. Qt 发展前景及就业分析)
[二. Qt 开发环境搭建](#二. Qt 开发环境搭建)
[1. 开发工具概述](#1. 开发工具概述)
[2.Qt SDK 安装](#2.Qt SDK 安装)
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 会借助你编写的代码,生成代码
- 填写类信息设置界面
使用 Qt Creator 创建项目会自动生成一些代码出来,生成的代码就包含一个类,此处就是要选择这个自动生成的类的父类是什么。
⭕对于基类的选择,目前有三种基类:
💡这里生成的文件名是和类名关联的,这样的关联并非是强制的(但推荐这么做)。
上述三个类之间的关系如下图:
💡这个 Form file 非常关键,Qt 中创建图形化界面的程序有两种方式:
- 直接通过 C++ 代码的方式创建界面。
- 通过 Form file,以图形化的方式来生成界面。此时就可以使用 Qt Designer 或者直接使用 Qt Creator 来编辑这个 ui 文件,从而以图形化的方式快速方便的生成图像界面。
Qt 内置的类 都是以 Q 为前缀开头的。
- 选择版本控制系统
点击 "下⼀步" 进入项目管理界面。在项目管理界面可以设置作为子项目,以及加⼊版本控制系统管理。这两个功能暂时用不到,都用默认的 <None> ,然后点击 "完成"。
sum:前期 我们先选择使用 Qwight,其余创建一个新的 qt 项目,就是一路 next 就好啦~