Qt开发入门简介
内容主要有Qt基础知识,Qt Creator的使用,Qt工程设置,Qt 程序如何打包并提交到Mac App Store,Qt Widgets程序和Qt Quick程序,生成Xcode工程。
1 Qt 基础知识
概述
Qt提供了一个跨平台(Windows, Mac OS, Linux, Android, iOS等)的应用程序开发框架,并提供了非常丰富的跨平台类库。简单来说实现方式是通过定义一套中间类库,屏蔽各个操作系统细节,从而使应用开发者绝大多数情况下只依赖Qt的类库,而很少需要了解操作系统细节。Qt并不是像Java那样利用虚拟机机制实现跨平台,而是在编译期生成在该操作系统上可运行的二进制文件,一份代码,可以在不同的操作系统上编译,从而实现代码跨平台。
开发语言
Qt的原生开发语言是C++,同时Qt在标准C++的基础上封装了自己的很多机制以方便应用开发,例如有用来代替Callback的SIGNAL/SLOT机制,也有Property机制,序列化机制等等。更强大的是,Qt不仅可以用C++开发,同时也提供了大量其他语言的绑定,例如: python、java、Lua、Ada、Ruby等等,当然也少不了大PHP,详细列表可参见: http://wiki.qt.io/Category:LanguageBindings。有人说怎么没有万能的Javascript….其实是有的,有个东西叫QML,就是用Javascript-like的语言以及CSS来描述应用的外观和行为的。
QWidget和Qt Quick
QWidget对应的是最基础的窗口和控件系统,这对于任何一个GUI应用程序都是最为基础的类库,因此在Qt诞生之初就存在。类似于Mac上Cocoa那一套。Qt Quick是Qt4.7之后引入的基于QML(类似Javascript + CSS)来快速生成动态UI的工具集,专门为移动开发优化,如果之前有Javascript和CSS开发经历,应该会对QML上手较快。
QWidget和QLayout
几乎所有GUI系统对于Widget和Layout这两个词汇都会涉及,但都会有或多或少的差别。例如,在Android系统中对应于Widget概念的 是View(Widget这个词汇在Android里边是指桌面小部件),提供了基础的绘制、事件响应和处理等功能, 对应于Layout的是ViewGroup这个概念,继承自View,也提供了绘制、事件响应和处理等功能,同时还提供了子View的管理功能,继承于 ViewGroup的LinearLayout, RelativeLayout等实现了线性的或者相对的布局等功能。再例如,iOS中相对于Widget这个概念的是UIView类,但iOS要灵活的 多,UIView既提供了绘制、事件响应,又提供了子View管理以及布局的功能。 同样在Qt的世界里也有这两个概念,相同的是QWidget也实现了绘制、事件处理等功能,但QLayout并不继承自QWidget,只是为了方便 QWidget对子Widget进行布局的一个类,所以并不实现绘制、事件处理等功能,每个QLayout最多会有一个主Widget(所谓主 Widget是指该Layout管理这个Widget的子Widget)