QT开发——QT开发初识(1)
Qt背景
什么是客户端?
直接和用户打交道的这一端的程序。比如:chrome,qq音乐,steam......
和客户端相对应的还有一个词:服务器。
服务器:站再客户端背后的男人。
用户使用这个程序是为了解决一些实际的问题,但是有一些问题需要服务器通过网络在背后做出一些支撑。就比如说:打开手机,我现在想打个车。我一打开滴滴,我就需要输入我当前的地址还有目的的地址,然后就可以发送订单。那么订单发送到哪呢?发送到滴滴的服务器,然后滴滴的服务器就把这个订单再通过网络发送给司机的手机客户端上,司机就能够在手机上看到单,司机就可以接单了。
有的程序它压根就不需要网络,那么它算不算客户端呢?比如说画图板,当然算啊,我算不算客户,我要用画图板画东西啊。
虽然大部分的客户端程序,是需要有背后的服务器做支撑的。但是确实也有些程序,是不需要服务器的。这样的程序,同样也是直接和客户端打交道,也可以称为"客户端程序"。
Qt这个技术主要是用来进行桌面应用开发(电脑上写的程序),Qt无法开发网页前端,也不能开发移动应用(目前Qt官方也支持移动应用的开发了,但是目前还没听说过有什么知名的商用移动应用程序是Qt开发的)。
客户端开发的重要任务:编写和用户交互的界面。
和用户交互的界面,有两种典型的风格:
1.命令行界面/终端界面(黑框框) ===> TUI(偏向于专业软件——给程序员用的)
2.图形化界面 ===> GUI(给普通用户用的)
Qt就是用来编写桌面GUI 程序的一套框架
在Windows编写GUI程序,也是有很多解决方案的,Qt只是其中的一种
GUI开发的各种技术方案
Windows 下还有哪些方案,可以开发GUI?
1.Windows API ,Windows 系统提供的原生API。开发起来非常原始,也非常繁琐(最早期开发图形化界面的方式,毕竟以前也没得选,只有这个可以用)
2.MFC 当年(上世纪90年代)影响力非常深远
VC 6.0也是
3.Qt(1991年左右)诞生了
以上这些都是基于C/C++搭建出来的一些GUI开发的技术体系
GTK,WxWidget这些我们就跳过了
后来微软自己搞了个编程语言C#(C sharp)
4.Windows Forms 就是给C#(.net)量身定做的一套开发 GUI 的技术体系
5.WPF
6.UWP 这两种可以认为是Windows Forms的升级版
7.Electron 本质上是把基于 HTML 这样的网页,打包成一个Windows上运行的客户端程序。这个技术体系,最初是用来开发"atom"文本编辑器的——由GitHub开发。后来atom竞争不过微软的vscode,而这两者都是基于electron的。
Qt优势:能够跨平台。(不仅支持Windows,也支持Linux,还支持Mac)
什么是框架?
什么是应⽤程序框架?
框架,本质上是一群大佬发明出来的,方便让咱们普通的程序员写出来的代码比较靠谱。
在软件开发中,谈到自由、灵活其实是贬义词,越自由,越灵活,那么就越容易出错!
那么怎么不容易出错呢?框架就是在限制程序员的自由,不至于让程序员天马行空的写代码。
库和框架有一点相似的,都是属于大佬把一些代码写好了,让你去使用。
不同的地方:
库是被程序员调用的,程序员是主体。
框架,则是占主体,程序员配合框架,完善填充框架中留出的一些细节
C++的生态,是割裂的,离散的,不像隔壁的Java,存在一些巨无霸社区,一统天下(spring)。C++不同的开源社区/大厂。各自有各自的框架,各自为政。
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 等各平台的全⾯⽀持。
支持的平台
Windows ‒ XP、Vista、Win7、Win8、Win2008、Win10Unix/X11 ‒ Linux、Sun Solaris、HP-UX、Compaq Tru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、 BSD/OS、和其他很多 X11 平台Macintosh ‒ Mac OS XEmbedded ‒ 有帧缓冲支持的嵌入式 Linux 平台,Windows CE。有些嵌入式系统也是需要用到图形化界面的程序的,这个时候Qt就可以起到作用了,尤其是在一些工业设备上Android
Qt的优点
跨平台,几乎支持所有的平台;
接口简单,容易上手,学习 QT 框架对学习其他框架有参考意义。
一定程度上简化了内存回收机制;(半自动的垃圾回收)
开发效率高,能够快速的构建应用程序。
有很好的社区氛围,市场份额在缓慢上升。
可以进行嵌入式开发
更多推荐
所有评论(0)