2017年底,整理博客时,汇总学习记录(参阅手册),和整理 Qt 这部分内容,遂有此文。
Qt概览
市场
Qt对于不同类型的应用程序开发支持非常丰富:包括控制台程序,经典的桌面用户界面程序和触摸式用户界面程序。
其实主要是 嵌入式 和 桌面环境。 移动端?至少我没有接触到。
Qt5
Qt5是一个大版本更新,7年一次的更新(到Qt 4.8, qt4已经发布了7年)。
Qt5值得关注的: (即 QML 相关)
1 | 開發者生產率:QML和JavaScript語言是主要用於設計UI的方法。後端將有C++來完成繪制。 |
虽然 Qt 跨平台(大多数主流的桌面与嵌入式平台都能够支持),但是这仅仅是说 Qt 框架对各平台 API 做了抽象。
至于我们写的程序,从一个平台移植到另外一个平台,还需要花费时间去测试。
Qt模块
modules分为: 基础模块(核心模块) + 附加模块(多数人用不到, 或者高级开发人员用到)
(Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化)
核心模块: (也就是我们大多数 Qt 开发者必会)
附加模块: (该部分不一定包含在发布版本中)
可以把它看做核心模块的 + 专业知识的定制组件。 (其中有些模块还没有发布或者没有得到很好的测试, 慎用)
详细内容,参见模块部分详解.
Qt creator
这就是一个带设计界面的 IDE, 没事儿老报错(崩溃),品质一般。 (对于开发 Qt 程序,足够了)
最好熟悉的它的常用快捷键,这里我就不列举了。可以参考以前写过的一篇 文章
(在官方网站上下载的 Qt SDK = Qt creator + Qt Library)
核心内容
QtQuick
在现代的软件开发中有一个内在的冲突,用户界面的改变速度远远高于我们的后端服务。在传统的技术中我们开发的前端需要与后端保持相同的步调。当一个项目在开发时用户想要改变用户界面,或者在一个项目中开发一个用户界面的想法就会引发这个冲突。敏捷项目需要敏捷的方法。
Qt4.7開始引進了QtQuick技術,允許用戶設計一個滿足客戶需求的,從簡單的元素來實現一個完整的新的用戶界面。
类似HTML语言,QML是一个标识语言。(相当于一个 DSL)
简单声明的UI被称作前端,本地部分被称作后端。
这样你可以将程序的计算密集部分与来自应用程序用户界面操作部分分开。
在典型的项目中前端开发使用QML/JaveScript,后端代码开发使用Qt C++来完成系统接口和繁重的计算工作。
这样就很自然的将设计界面的开发者和功能开发者分开了。后端开发测试使用Qt自有的单元测试框架后,导出给前端开发者使用。
这部分内容,单独再说。(比较推荐)
其他
下面的内容涉及比较细,请参考其他单独的文件。
(由于每部分只是我的学习笔记整理,所以就不分享了,可以参考我的作品页面)
相关资料
视频资源
- youtube
- 丁林松-QT培训视频教程
- 传智 Qt 六天
- packet: learn qt5
图书
- 《Qt Creator快速入门》
- 《Qt及Qt Quick开发实战精解》
- 《Qt学习之路2》 地址
- 《Qt5开发及实例》
- 《Qt高级编程》
- 《C++ Qt5范例开发大全》
- 《Qt中的C++技术》
- 《Qt5 C++ GUI Programming Cookbook》
- 《QML/Qt5 Cadaques》 地址, 翻译
博客
个人经历
我前前后后(包括上学的时候,工作),学习 Qt 大概有三个轮回,螺旋式的。
第一次大概过程如下: (上学时,大三实训; 比较乱,因为是根据知识点细节来的)
第二次是工作的时候,平时闲下来没有事儿,就做一些小练习,小项目。
具体,可以参考我做过的作品&项目。
(这个阶段,表面上我不知道自己做了什么,知道什么,其实已经积累了很多, 欠缺整理)
第三次是整理博客的时候,规整一下 Qt 这部分内容啦。
- 汇总看过的资料
- 详细的梳理知识点,然后输出成文章&笔记
- 做过的项目
项目代码外,分批整理了其各个模块
:
每部分内容其实都不是太多(有些模块可能比较多,但不是框架本身,而是涉及领域,比如并发这一块儿,除了传统的线程,线程池,进程,IPC,同步等内容,还有并行计算API等),做项目才会遇到很多问题。
(看到的这篇文章,其实也算作第三次学习的过程).
最后建议
首先 Qt 的内容非常多, 即使你想老老实实的做个调包侠也需要一段事件熟悉,需要做好几个项目。
所以具体的,当前不相关的,用的时候再去熟悉,相信我不晚。
书也好,博客也好,视频也好,练习也好,都是过程,经历; 最好乐在其中。
相对有计算机基础,但不了解 Qt 框架的人,我的建议:
- 1.《QML/Qt5 Cadaques》第1,2,3章节 –
了解 Qt 全貌
- 2.network, sql, xml, qml, file, gui, thread等 —
攻克 Qt 核心模块
- 3.写点作品 (或者写不出来的话,请大量的练习使用 Qt ) —
综合练习
关于上面的第二点, 可以参考 utube 上 packt 的建议 :
(大致需要半年的时间,有人觉得自己可以速成?我只觉得他入行不深。)
大致就这么多,点到为止,技术能做的只有这么多;其他的东西(勤奋之外的),要看天分和才华,还有运气。
Merlin 2017.12 系统化整理