Qt学习及使用_第1部分_认识Qt---学习目的及技术准备
前言
学以致用,通过QT框架的学习,一边实践,一边探索编程的方方面面.
参考书:<Qt 6 C++开发指南>(以下称"本书")
标识说明:概念用粗体+倾斜.重点内容用(加粗黑体)---重点内容(红字)---重点内容(加粗红字),
本书原话内容用深蓝色标识,比较重要的内容用加粗倾斜下划线深蓝色标识
引入
笔者看学习Qt的目的,以及学习前需要哪些技术上的准备.
学习目的
可能有人会奇怪学习目的不就是使用吗,为什么还要提这个?道理很简单,知其然和知其所以然
1.学习Qt为了使用
Qt框架建立一个GUI界面,实现一些功能.例如Qt creator(Qt的程序界面)是一个Qt设计的程序,如下图
他包含了窗口,标题栏,菜单栏,下拉菜单 等元素.
使用框架是一种"所见即所得"的编程方式,不需要程序员和底层打交道,与系统内核以及硬件交互的代码都被封装进框架,程序员面向应用层专注于应用,大大简化了程序的编写.
Qt和其他框架相比,还有两个优势:一是基于Windows,有一台PC就可以干;二是支持GUI编程,鼠标点几下内容就出来了,是一种最简易的"所见即所得"的框架,这也是很多人选择他的原因.
2.学习Qt为了明白程序结构,为写框架做准备
如果学习框架的目的只是为了使用框架,要求未免有点低了.笔者认为只会使用框架的程序员不能称为"真正"的程序员.有人觉得会用也不错了,是的,专注于使用框架且能写出满意的效果,也达到目的了.
深入理解框架的原因至少有以下两方面:
1.项目升级更新,要想做出更"炫"的效果,就需要框架支持.如果不要框架支持自己写,不能通用.
2.要写属于自己的框架.在学习Qt的过程中理解所有框架都包含的一些东西
简单的说,目的1---使用框架不需要读源码,目的2---深入理解框架需要读源码.
技术准备
本书说明中要熟悉C++才能读本书.C++语法又多又杂,什么叫"熟悉",什么叫"精通",并没有一个标准去衡量.
笔者认为目的1---使用框架,不需要太多的C++知识.本书前面几个章节,有一些新的知识,后面的章节几乎大同小异---不是说内容大同小异,是使用者的使用方法大同小异.因为很多东西都封装过了,有一种饭做好喂到嘴边那种感觉.枚举和类继承是用得比较多的(笔者的C++基础里也有相关内容可参看)
目的2---深入理解框架,需要的知识比较多了.像笔者用C++11,查看源码里有constexpr等C++14,[[nodiscard]]等C++17的内容.所以C++语法懂得越多越好,不过也不用太在意.现在用的C++几乎都是以11为基础,后面的版本增加了一些内容而已,可以边看边学.
此外,Qt使用面向对象的编程方式,模块基本上全是以类的形式出现.所以面向对象的知识也是需要的("面向对象"有没有精通一说呢?笔者也不知道).如果说熟练运用面向对象有个标准的话,就是设计模式用得是否熟练.但设计模式与具体使用场景有关.如果刻意去学设计模式,他不能像学编程语言一样有立竿见影的效果.在程序员"不经意"的设计好一个类解决问题后,自然明白使用到了哪种设计模式.说的直白一点,设计模式是一种"意会",看起来难本质上不难.所以在学习Qt时借用Java中的一句话:一切都是对象.
编程遵循的路线:需求→程序模型→库(框架)→代码.程序模型也是非常重要的.在框架里,模块里类与类之间的关系图,通常说明了程序模型.
其他
以往的技术都是一些"散装"的知识,编程语言,面向对象,网络通信,多线程,数据类等等.框架把他们整合到了一起,因此还需要注意各个部分是怎样结合的.
还有一点,经常会有人纠结学什么框架.站在数学的角度来看就很明白---框架是现象.也就是说所有的框架本质相同:有前端(界面),后端(数据),逻辑层(怎样显示数据)