Qt 背景介绍
什么是 Qt
Qt 是⼀个 跨平台的 C++ 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的,很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应⽤程序,同时也可以使⽤ C++ 语⾔进⾏⾼级开发。
图形⽤⼾界⾯ :指采⽤图形⽅式显⽰的计算机操作⽤⼾界⾯,是计算机与其使⽤者之间的对话接⼝,是计算机系统的重要组成部分。如:Android ⼿机图形⽤⼾界⾯ 和 IOS ⼿机图形⽤⼾界⾯。

Qt 的发展史
1991 年 Qt 最早由奇趣科技开发;
1996 年 进⼊商业领域,它也是⽬前流⾏的 Linux 桌⾯环境 KDE 的基础;
2008 年 奇趣科技被诺基亚公司收购,Qt 成为诺基亚旗下的编程⼯具;
2012 年 Qt ⼜被 Digia 公司收购;
2014 年 4 ⽉ 跨平台的集成开发环境 Qt Creator3.1.0 发布,同年 5 ⽉ 20 ⽇发布了 Qt 5.3 正式版,⾄此 Qt 实现了对 IOS、Android、Embedded 等各平台的全⾯⽀持。
Qt ⽀持的平台
•
Windows ‒ XP、Vista、Win7、Win8、Win2008、Win10
•
Unix/X11 ‒ Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS、和其他很多 X11 平台
•
Macintosh ‒ Mac OS X
•
Embedded ‒ 有帧缓冲⽀持的嵌⼊式 Linux 平台,Windows CE
•
Android
Qt 版本
⽬前最新的版本是 Qt 6. 但是相对来说 Qt 6 和 Qt 5 之间的核⼼功能区别不⼤. 并且企业中也仍然有⼤量的项⽬在使⽤ Qt 5.
因此咱们仍然使⽤ Qt 5 版本来进⾏介绍
另外 Qt 在发布的时候还提供了两种许可证.
•
商业许可: 开发者以商业⽬的使⽤Qt框架进⾏开发和发布软件的许可,开发者需要购买商业许可并按照相关规定使⽤Qt框架。商业许可提供了更多的功能和服务,适合于商业软件开发。
•
开源许可: 开发者以⾮商业⽬的使⽤Qt框架进⾏开发和发布软件的许可,开发者可以免费使⽤Qt框架,但需要遵守开源许可协议的要求,如在软件中包含Qt许可协议的声明等。

Qt 的优点
•
跨平台,⼏乎⽀持所有的平台;
•
接⼝简单,容易上⼿,学习 QT 框架对学习其他框架有参考意义。
•
⼀定程度上简化了内存回收机制;
(半自动的垃圾回收,能够简化内存释放,也能够尽可能小的影响程序的运行效率)
•
开发效率⾼,能够快速的构建应⽤程序。
•
有很好的社区氛围,市场份额在缓慢上升。
•
可以进⾏嵌⼊式开发。
Qt 的应⽤场景
•
桌⾯应⽤程序
Qt 能够创建各种类型的桌⾯应⽤程序,包括⽂件管理器、媒体播放器、绘图程序等。Qt 应⽤程序⽀持多种操作系统,可以运⾏在 Windows、Linux、macOS 等桌⾯操作系统上。
•
移动应⽤程序
Qt ⽀持 Android 和 IOS 移动操作系统,为应⽤程序提供了强⼤的跨平台能⼒。可以使⽤ Qt 构建各种移动应⽤程序,例如社交应⽤、游戏、娱乐等。
•
嵌⼊式系统
Qt 在嵌⼊式领域应⽤⾮常⼴泛,它可以构建⾯向各种设备的图形应⽤程序,在机顶盒、⻋载娱乐系统、安防监控设备等领域具有⼴泛的应⽤。
Qt 的成功案例
Linux 桌⾯环境 KDE

WPS Office 办公软件

搭建 Qt 开发环境
Qt 的开发⼯具概述
Qt ⽀持多种开发⼯具,其中⽐较常⽤的开发⼯具有:Qt Creator、Visual Studio、Eclipse.
咱们后续使⽤ Qt Creator 开发 Qt 程序
Qt SDK 的下载和安装
Qt SDK 的下载
Qt 下载官⽹:
Index of /archive/qt
注意:

为什么要设置环境变量?
答:环境变量是在操作系统中⼀个具有特定名字的对象,它包含了⼀个或者多个应⽤程序将要使
⽤到的信息。
例如Windows 和 DOS 操作系统中的 path 环境变量,当要求系统运⾏⼀个程序⽽没有告诉它
程序所在的完整路径时,系统除了在当前⽬录下⾯寻找此程序外,还会到 path 中指定的路径
去找。
在 Windows 上设置 Qt 的环境变量是为了能够在命令⾏或其他应⽤程序中直接访问 Qt 相关
的命令和⼯具。

使⽤ Qt Creator 新建项⽬


认识 Qt Creator 界⾯
main.cpp

widget.h
widget.cpp
widget.ui
.pro
Qt Hello World 程序
使⽤ "标签" 实现
纯代码⽅式实现

可视化操作实现
(1)双击:" widget.ui " ⽂件;
(2)拖拽 "标签" ⾄ UI 设计界⾯中,并双击修改标签内容;

其他方式实现(同上类似,这里就不过多描述)
乱码解释(打印中文出现乱码)
例如:
解决方法:
小结:
Qt 编程注意事项
Qt 中的命名规范
•
类名:⾸字⺟⼤写,单词和单词之间⾸字⺟⼤写;
•
函数名及变量名:⾸字⺟⼩写,单词和单词之间⾸字⺟⼤写;
💡
Qt 偏好驼峰命名法. 这⼀点不像之前偏好蛇形命名.

Qt Creator 中的快捷键
•
注释:ctrl + /
•
运⾏:ctrl + R
•
编译:ctrl + B
•
字体缩放:ctrl + ⿏标滑轮
•
查找:ctrl + F
•
整⾏移动:ctrl + shift + ⬆/⬇
•
帮助⽂档:F1
•
⾃动对⻬:ctrl + i;
•
同名之间的 .h 和 .cpp 的切换:F4
•
⽣成函数声明的对应定义: alt + enter
使⽤帮助⽂档
打开帮助⽂档有三种⽅式. 实际编程中使⽤哪种都可以.
1、光标放到要查询的类名/⽅法名上, 直接按 F1
2、Qt Creator 左侧边栏中直接⽤⿏标单击 "帮助" 按钮
3、找到 Qt Creator 的安装路径,在 "bin" ⽂件夹下找到 assistant.exe,双击打开;
Qt 窗⼝坐标体系
坐标体系:以左上⻆为原点(0,0),X向右增加,Y向下增加。



