QT
概述
基于C++的GUI开发框架,跨平台。Qt 是一个用于桌面系统和嵌入式开发的跨平台应用程序框架。
QT是挪威TROLLTECH公司开发的跨平台C++工具,在UNIX下非常出名;他的宗旨是“一次编码到处编译”与JAVA的“一次编译到处运行”有着本质的区别,作为跨平台开发工具,他的运行速度非常的快(因为他不需要虚拟机的支持),开发的GUI非常漂亮(有人认为比VISUAL C++强的多,而且简单)。
QT
技术特点
- 面向对象:Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt 提供了一种称为signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。
- 丰富的组件和API:Qt 包括多达250个以上的C++类,还替供基于模板的collections, serialization,file,I/O device,directory management, date/time 类。甚至还包括正则表达式的处理功能。
- 支持 2D/3D 图形渲染,支持 OpenGL
- 对象的通信机制,信号-槽
- 方便的事件处理模型
- 夸平台的GUI应用程序的支持
- XML 支持,数据库,网络编程,开发工具包,大量的开发文档
Qt相对于
C++增加的特性有
- 能够强有力地支持对象间通信的信号与槽机制
- 支持可查询和可设计的动态对象属性机制
- 事件和事件过滤器
- 基于上下文的字符串本地化
- 能够支持多任务的定时器
- 支持按层次检索的对象树
- 受保护指针
- 动态类型转换
开发工具包
- 图形设计器:Qt Designer
- 编译工具:qmake
- 本地化工具:Qt Linguist
- 帮助文档:Qt Assistant
- 元对象编译器:moc
- 用户接口编译器:uic
- 资源编译器:rcc
QT模块介绍-----头文件
Qt 5 与 Qt 4 最大的一个区别之一是底层架构有了修改。Qt 5 引入了模块化的概念,将众多功能细分到几个模块之中。Qt 4 也有模块的概念,但是是一种很粗的划分,而 Qt 5 则更加细化。本节主要对 Qt 5 的模块进行一个简单的介绍,以便以后大家需要哪些功能的时候知道到哪个模块去寻找。
Qt 5 模块分为 Essentials Modules 和 Add-on Modules 两部分。前者是基础模块,在所有平台上都可用;后者是扩展模块,建立在基础模块的基础之上,在能够运行 Qt 的平台之上可以酌情引入。
Qt 基础模块分为以下几个:
- Qt Core,提供核心的非 GUI 功能,所有模块都需要这个模块。这个模块的类包括了动画框架、定时器、各个容器类、时间日期类、事件、IO、JSON、插件机制、智能指针、图形(矩形、路径等)、线程、XML 等。所有这些类都可以通过 <QtCore> 头文件引入。
- Qt Gui,提供 GUI 程序的基本功能,包括与窗口系统的集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图像、字体、拖放等。这些类一般由 Qt 用户界面类内部使用,当然也可以用于访问底层的 OpenGL ES 图像 API。Qt Gui 模块提供的是所有图形用户界面程序都需要的通用功能。
- Qt Multimedia,提供视频、音频、收音机以及摄像头等功能。这些类可以通过 <QtMultimedia> 引入,而且需要在 pro 文件中添加 QT += multimedia。
- Qt Network,提供跨平台的网络功能。这些类可以通过 <QtNetwork> 引入,而且需要在 pro 文件中添加 QT += network。
- Qt Qml,提供供 QML(一种脚本语言,也提供 JavaScript 的交互机制) 使用的 C++ API。这些类可以通过 <QtQml> 引入,而且需要在 pro 文件中添加 QT += qml。
- Qt Quick,允许在 Qt/C++ 程序中嵌入 Qt Quick(一种基于 Qt 的高度动画的用户界面,适合于移动平台开发)。这些类可以通过 <QtQuick> 引入,而且需要在 pro 文件中添加 QT += quick。
- Qt SQL,允许使用 SQL 访问数据库。这些类可以通过 <QtSql> 引入,而且需要在 pro 文件中添加 QT += sql。
- Qt Test,提供 Qt 程序的单元测试功能。这些类可以通过 <QtTest> 引入,而且需要在 pro 文件中添加 QT += testlib。
- Qt Webkit,基于 WebKit2 的实现以及一套全新的 QML API(顺便说一下,Qt 4.8 附带的是 QtWebkit 2.2)。