2013年夏,我们尝试使用Qt5去开发一个IDE,一个简单、好用,针对初学者/OIer/ACMer等等人群的IDE。当然,我们也是我们项目主要的目标用户群中的一员。这个人群常写的代码都有这样一个特点:单文件,命令行(或文件)输入输出,代码行数一般不超过1000行。对于他们而言,建立工程,写makefile等等都是不需要的,因为他们的代码只为学习算法或数据结构。
我们希望我们的作品可以提高我们写这类学习性代码的效率,同时,我们也希望在实现项目的过程中积累经验,学习那些我们所感兴趣的技术。学习,是这个项目的核心:源于学习,同时应用于学习。而本文则记录了我们按照怎样的步骤去学,又学到了什么,是我们学习过程的一个体现。我们希望当我们把知识又还给书本和网络的时候,可以从这里找到,我们都学到过什么。同时,我们也希望,这些文字对其他正在学习Qt5的人能有所帮助。 我们曾尝试着寻找所有我们能找到的关于Qt5的中文资料,但却收获甚少。虽然有一些高质量的教程,但基本上都是入门教程,更多更详尽的内容仍需阅读英文文档。其实,网上的内容并不少,只是杂乱地分布于各个角落中。有些是Qt4的资料但对于Qt5来说依然没有过时。有些Qt4的资料虽已过时,但稍加改动就可以应用于Qt5中。还有些则是大家的零星的使用经验、代码分析、Qt设计模式分析等等内容。这些内容对于使用Qt来说都有各自不同的意义。于是我们萌生了这个想法:我们希望把我们在学习Qt过程中所遇到、看到的所有的内容整理出来,形成一本完整的笔记。 作为学生,我们拥有着一个得天独厚的优势:我们有时间系统地学习。Qt5虽然是现在比较新的技术,但终有一天它会过时。所以,技术并非我们想在这个过程中学会的唯一的东西。我们同时希望学会如何学习技术。如果掌握技术更本质的东西,在不同项目、不同设计中不变的东西。未来我们需要学的技术还有很多,包括那些已经存在的和还未诞生的。浩浩互联网,框架、库、语言等想要多少就可以找出多少,未来还会有更多。所以单纯学习某一个库或架构的使用是毫无意义的。更多的,我们希望学会其更深层次的原理。这些原理才是十年二十年乃至永恒的不会变化的东西,也是构成这一切的基础。掌握这些可以使我们迅速理解一些新的设计、新的语言、新的库的很多概念,大大加快我们的学习速度。就像掌握汇编的人在学习高级语言时速度会非常快一样。因为他了解更深层次的原理。又如理解操作系统原理的人学习如何使用一个操作系统也会非常快,不会像普通用户一样换个操作系统界面就又要花大量时间重新学习。因此,我们希望能在这个过程中,收获的更多,同时,和大家一起分享我们的收获。
本文包含了原创内容和文档翻译,以及一些对别人文章的引用、整理,这些内容往往是混在一起的。这是我们的学习Qt5的过程的备忘录(说是学习笔记也可以),所以,并未严格区分这些内容。当然,必要的部分会按原作者的要求声明原文地址。
-
本文的目标读者
所有希望了解Qt或者希望开发跨平台程序的学生、程序员等等;
-
阅读本文需要什么技能?
我们假定你掌握了足够的关于C++知识和计算机基础知识。