Qt学习笔记一:入门

    学习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 的外观和行为

 

你可能感兴趣的:(QT入门学习,认识QT)