在刚开始学习qt的时候,想要一个对qt的大体了解,无果,只能慢慢摸索,现在qt5了,相信大体框架暂时不会改变多少,所以贴出来,大家交流,有什么不对的地方大家还是指出的为好,基本上是翻译的qt官方文档,所以有不对的地方一定要指出来啊。
QtCore
这是qt最核心的module,所以放在最开始了。因为其提供了几种qt对C++扩展的实现机制(mechanism)。
1、The Meta-Object System,元对象系统
2、The Property System,属性系统
3、Object Model,对象模型
4、Object Trees & Ownership,对象树和所有权
5、Signals & Slots,信号和槽
这几个mechanism是qt最重要的机制了,在刚接触qt的时候,几乎只知道信号和槽,但是学qt5让我更加了解这些。
以上是非常核心的机制,在QT帮助文档上面还有:
线程和并行编程:threading class,其实看文档就知道,qt的线程是使用的本地线程,比如win32的thread,linux的thread等等;
Input/output,resources,containers:接受输入,打印输出,qt提供了跨平台机制来存储二进制文件--qt资源系统,容器;
另外qt提供了几种关键性的框架。The Animation Framework,JSON Support in Qt,The State Machine Framework,How to Create Qt Plugins,The Event System。下面是这些类的概览:
C++ classes
Animation Classes
Threading Classes
Container Classes
Plugin Classes
Implicitly Shared Classes
State Machine Classes
Input/Output Classes
Event Classes
QtGui
This section islearning QtGui.
The Qt GUI module provides classes for windowingsystem integration, event handling, OpenGL and OpenGL ES integration, 2Dgraphics, basic imaging, fonts and text.这个意思就是说QtGui包含了哪些类,窗口系统集合,事件句柄,OpenGL,OpenGL ES集合,2D图形,基本的图形界面,字体,文本。
在使用的时候只要
#include <QtGui>
在QT5中最大的变化就是一些widget有关的全部移到QtWidgets类里面去了,在QtGui中只保存了graphic相关的一些东西,有关拖动的概念也在这个类中,在QT帮助文档中有Drag and Drop这一项,详细见帮助文档。顺便提一下mime type,这是一个在拖动的时候保存数据的类型。
QtWidgets
First:This section learn QtGui
在添加这个类之前,需要在qmake的.pro工程文件中添加这一句
QT += widgets
还要
#include <QtWidgets>
说点前话,在widget里面包含了两个必不可少的东西,一个是Styles,就是说窗口的样式;另一个就是layout,就是布局。这两个是widget里面很重要的两个概念。Layout可以用Qt Designer设计。
QtWidgets类包含了下面这些类:
Model/View Classes,是视图框架,就是数据和视图分开的一个概念,用户和view打交道,model和底层的数据结构打交道,qt这么一抽象,将我们develop的难度大大降低,其实这个是和另外一个概念类似,就是MVC,model-view-control,具体详情可以google或度娘。
Graphics View,是qt的2D绘图,具体还待研究。The GraphicsView Framework is for managing andinteracting with a large number of custom-made 2D graphical items, and a viewwidget for visualizing the items, with support for zooming and rotation,这句话就是说支持图像缩放和旋转。
以上是两个重要的framework,具体的API可以参考官方文档
QtNetwork
看名字就知道,这是QT的网络功能,同样,第一个问题就是我们怎么开始使用。
包含头文件:#include <QtNetwork>
在工程文件中添加编译模块:QT += network
这样我们就能放心的使用提供的网络API了。在这个新版QT里面,实现了HTTP,FTP协议,所以,可以直接调用它的API,其他的就得使用这些了:用TCP编程就用QTcpSocket and QTcpServer,使用UDP编程就用QUdpSocket了,要找到HOST信息就用Host Names using QHostInfo,用网络代理就使用QNetworkProxy类,还有一个Bearer Management Support,翻译叫支架管理支持,具体怎么用,还是看帮助文档,嘿嘿。
慢慢学习中。。。