您的位置:首页 > 编程语言 > Qt开发

Qt学习笔记一:入门

2012-08-04 22:04 429 查看
学习QT这么长时间,想想当初学习时,走了很多弯路,入门花了很长时间。刚想学习这个开发工具时,不知道怎么开始,就像有一张美味的大饼,不知道在哪个地方开始下口,现在把这个阶段的知识总结一下,供大家参考。

QT发展到现在,已经有了一个成熟的开发环境(IDE),具体名字叫做QT SDK,这个和win下的VS2008,VS2010一样,建议刚开始用这个学习,容易入门,开发环境在各个系统下,界面是一样的,为跨平台编译,把困难减到最小的程度。

一 QT的相关工具和框架

所有和QT相关的构架如下图所示:





如上图所示,左侧是Qt SDK的不同系统版本:

左侧从上到下:

Qt SDK for windows: Qt的windows版本。

Qt SDK for linux/X11 32-bit:Qt的32位linux版本

Qt SDK for linux/X11 64-bit:Qt的64位linux版本

Qt SDK for Mac:Qt的萍果系统版本。

右侧从上到小:

是QT框架,如windows下的MFC等,但我本人感觉,QT是最好用的框架。

从上到下依次是不同体系平台上的框架。

二 把握QT相关脉络,站在全局掌握QT开发

QT总共有十二大类库,是独立的十二个模块,这十二个模块是QT主要组成部分,所有不同体系平台的QT版本都是有这些模块组成的。





各模块的分类具体如下:

2.1 Qt 核心模块

Qt 核心模块是所有基于 Qt 的应用程序的基础,包含了其他模块所使用的核心非图形类。
主要功能

文件 IO、事件和对象处理

多线程 和并发

插件、设置管理

信号与槽 的对象间通信机制

优势

通过利用一整套应用程序生成块,减少开发时间并降低成本

从最初阶段就开发具有跨平台功能的可移植代码

2.2整合 Web、富内容 (Rich Content) 和服务:Qt WebKit 集成

主要功能

集成了 Web 渲染引擎

使用 HTML、XHTML、SVG、CSS 和 JavaScript

在您的应用程序中加入 Flash、音频和视频元素

在富应用程序中嵌入网络内容和服务

在 HTML 文档中支持本地控件

优势

快速创建加入实时网络内容和服务的应用程序

在单独的富应用程序中完美融入网络和本地内容以及服务

完全控制跨桌面平台和设备之间的浏览器环境

2.3 创建高级图形用户界面:GUI 模块

模块包含了开发高级图形用户界面应用程序所需的功能。Qt 使用其支持的各个平台的本地图形 API,充分利用了系统资源。您还可使用特定外观创建定制的 UI。

主要功能

一整套可定制的 widget

2D 图形画布OpenGL® 集成

强大的字体和布局引擎

样式引擎和 widget 样式表

反锯齿、矢量形变和 SVG 支持

支持 ARGB 顶层 widget

优势

利用整套的生成块,用较少的代码生成用户界面

完全控制应用程序和设备的外观

仅用几行 CSS 代码就可定制您的 UI

提供丰富的用户体验

2.4ECMA 标准脚本引擎:Qt Script 模块

Qt 包含完全集成的 ECMA 标准脚本引擎。Qt Script 集成了 QObject,为脚本提供了 Qt 的信号与槽 (Signals & Slots) 机制,可在 C++ 和脚本之间进行集成。

主要功能

ECMA 标准脚本语言(ECMAScript 3,JavaScript 1.5 的基础)

可采用 Qt 的 信号与槽机制 简化对象间通信 (inter-object communication)

集成了 QtScript 调试器.

优势

脚本支持可使开发事倍功半

提供脚本错误报告,用户可用自己的脚本跟踪程序缺陷

2.5 网络模块

Qt 网络模块提供了可使网络编程更便捷且具有跨平台优势的功能。Qt 提供了完整的客户端和服务器套接字提取功能,并采用了通用协议,如 HTTP、FTP 和 DNS,包括对异步 HTTP 1.1 的支持。

主要功能

完整提取客户端和服务器套接字

高层类,如 QHttp 和 QFtp,采用了特殊的应用层协议

较低层类,如 QTcpSocket、QTcpServer和 QUdpSocket

支持 HTTP、FTP、DNS、异步 HTTP 1.1

优势

使网络编程更便捷且具有跨平台优势

2.6 集成所有主要数据库:数据库模块

QtSql 模块可协助您完美地将数据库集成至您的 Qt 应用程序。Qt 支持所有主要的数据库驱动,您可向数据库服务器发送 SQL 命令或让 Qt SQL 类自动生成 SQL 查询。

主要功能

驱动层:支持 ODBC、MySQL、PSQL、SQLite、ibase、Oracle、Sybase、DB2

API 层:可访问特定的数据库

UI 层:将数据库数据链接至数据感知 widget

可配合 Qt 的 Model/View 编程模型使用

优势

便于将数据库数据集成至您的 Qt 应用程序

使用不同的视图呈现数据

从视图中提取数据,可更加灵活地将数据以直观方式呈现给用户

2.7提供单元测试框架

Qt 提供了单元测试框架以及测试图形用户界面的扩展中所有常用的功能。
主要功能

精简的独立测试框架

鼠标和键盘模拟功能

集成 Visual Studio 和 KDevelop IDE

可轻易地向测试数据和测试输出增加定制类型

优势

降低编写和执行测试的时间和成本

在 Qt 应用程序上快速运行重复的测试

快速交付更高质量的应用程序和设备

2.8 XML模块

QtXml 模块提供了 XML 文档的流阅读器和编写器、C++ 实现的 SAX 和 DOM 以及 XQuery 和 XPath 引擎。XQuery 是简单的类似 SQL 的查询语句,用于转换 XML 文档,可选择和合并感兴趣的 XML 元素并将其转换为 XML 或其他格式的输出。XQuery 简化了查询任务,不必再繁琐地编写大量 C++ 代码。

主要功能

XML 文档的流阅读器和编写器

C++ 实现的 SAX 和 DOM API

用于高级查询的类和使用 XQuery 查询语言控制 XML 数据的功能

支持 XML 文档的 XSLT 转换语言

优势

只需几行代码就可执行高级 XML查询

便于在应用程序中查询、提取和传输 XML 数据

2.9高级 3D 图形:OpenGL 模块
QtOpenGL 模块提供了便于在 Qt 应用程序中使用 OpenGL® 和 OpenGL ES 加入 3D 图形的类。OpenGL 是标准图形库,可生成高性能的硬件加速跨平台图形化应用程序。OpenGL 是 3D 可视化的最佳选择,无须花费很大力气就可创建应用程序用户界面。

主要功能

OpenGL widget 可在 Qt 应用程序中使用 OpenGL 渲染图形

在嵌入式 Linux 和Windows CE 中集成 OpenGL ES

在 Windows 平台上支持 Direct3D®

优势

便于在您的应用程序中加入 3D 图形

充分利用系统资源,获得最佳图形性能

使用 Qt 丰富的 GUI 功能创建高级的 3D 应用程序 UI

2.10 充分利用多核硬件:多线程功能

Qt 跨平台多线程功能简化了并行编程,同时由于增加了并发功能,更便于利用多核架构。

主要功能

用于线程、数据和对象管理的类

采用 Qt 信号与槽 (Signals and Slots) 机制的类型安全的线程间通信

高级 并发 API ,可提取低级线程原语

优势

简化多线程编程

充分利用多核架构,获得最佳运行时性能

无须使用低级线程原语就可编写多线程程序

根据可用的处理器内核数自动调整使用的线程数

2.11 2D 图形画布:Qt Graphics View
Qt Graphics View 提供了用于管理和交互大量定制的 2D 图形对象的平面以及可视化显示对象的视图 widget,并支持缩放和旋转功能。Graphics View 使用 BSP(二进制空间划分)树形可非常快速地找到对象,因此即使是包含百万个对象的大型场景,也能实时图形化显示。

主要功能

缩放、旋转、透视转换和动画

支持拖放和打印

在图形场景中嵌入 widget 并进行互动

优势

更快捷地生成高级图形效果

在高性能情况下,图形化显示百万个图形对象

用户可通过全新方式与应用程序互动

2.12 Qt Declarative:可定制的动态用户界面

Qt Declarative 模块拥有一整套功能强大的类,用于为触摸式移动设备和嵌入式设备创建高度动态、定制的用户界面。Qt Declarative 是 Qt Quick 用户界面创建工具包的一个关键组件。

主要功能

QML Elements:全套 UI 和行为生成块

声明式编程方法

用于显示 Qt Declarative 用户界面的 QtDeclarativeView widget

优势

快速创建高度定制的高级用户界面

通过 C++ 扩展以 QML 语言生成的应用程序

使用声明式方法来确定 UI 的外观和行为

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息