QT 第一章开始学习QT与QT Creator
一、QT与QT Creator简介
QT是一个跨平台应用程序和 UI 开发框架。使用 QT 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。
QT Creator 是全新的跨平台QT IDE ,可单独使用,也可与 QT 库和开发工具组成一套完整的SDK . 其中包括:高级 C++ 代码编辑器,项目和生成管理工具,集成的上下相关的帮助系统,图形化调式器,代码管理和浏览工具。
二、QT功能与特性
1、直观的 C++ 类库:模块化 QT C++ 类库提供一套丰富的应用程序生成块(block),包含了构建高级跨平台应用程序所需的全部功能。具有直观,易学、易用,生成好理解、易维护的代码等特点。
2、跨桌面和嵌入式操作系统的移植性:使用 QT,您只需一次性开发应用程序,就可跨不同桌面和嵌入式操作系统进行部署,而无须重新编写源代码,可以说 QT 无处不在(QtEverywhere)。
3、使用单一的源代码库定位多个操作系统;
4、通过重新利用代码可将代码跨设备进行部署;
5、无须考虑平台,可重新分配开发资源;
6、代码不受担忧平台更改影响的长远考虑;
7、使用发人员专注于构建软件的核心价值,而不是维护 API。
8、具有跨平台 IDE 的集成开发工具:QT Creator 是专为满足 QT 开发人员需求而量身定制的跨平台集成开发环境(IDE)。Qt Creator 可在Windows、Linux/X11 和 Mac OSX 桌面操作系统上运行,供开发人员针对多个桌面和移动设备平台创建应用程序。
9、在嵌入式系统上的高运行时间性能,占用资源少。
三、QT Creator功能和特性
1、复杂代码编辑器:QT Creator 的高级代码编辑器支持编辑 C++ 和 QML(javaScript)、上下文相关帮助、代码完成功能、本机代码转化及其他功能。
2、版本控制:QT Creator 汇集了最流行的版本控制系统,包括 Git、Subversion、Perforce、CVS 和 Mercurial。
3、集成用户界面设计器:QT Creator 提供了两个集成的可视化编辑器:用于通过 QT widget 生成用户界面的 QT Designer,以及用于通过 QML 语言开发动态用户界面的 QT Quick Designer*。
4、项目和编译管理:无论是导入现有项目还是创建一个全新项目,QT Creator 都能生成所有必要的文件。包括对 cross-qmake 和 Cmake 的支持。
5、桌面和移动平台:QT Creator 支持在桌面系统和移动设备中编译和运行 QT 应用程序。通过编译设置您可以在目标平台之间快速切换。
6、QT模拟器Q:QT 模拟器是诺基亚 QT SDK 的一部分,可在与目标移动设备相似的环境中对移动设备的 QT 应用程序进行测试。
四、QT 的历史
1)1996年 QT 上市;
2)QT已成为数以万计商业和开源应用程序的基础;
3)QT 的软件授权机制具有经受市场检验的双重授权(开源与商业)模式;
4)QT Software 的前身为 Trolltech (奇趣科技)。Trolltech(奇趣科技)始创于1994;
5)Trolltech(奇趣科技)于2008年6月被 Nokia 收购,加速了其跨平台开发战略;
6)2012年8月芬兰 IT业务供应商 Digia全面收购诺基亚 QT业务及其技术。
五、QT所支持的平台
1、嵌入式Linux(Embedded Linux)
Qt for Embedded Linux® 是用于嵌入式 Linux 所支持设备的领先应用程序架构。您可以使用QT 创建具有独特用户体验的具备高效内存效率的设备和应用程序。QT 可以在任何支持 Linux 的平台上运行。QT 的直观 API ,让您只须少数几行代码便可以更短的时间实现更高端的功能。
特点:
1)用于 Linux 的紧凑的视窗系统;
2)用于广泛的应用程序处理器的开发;
3)移植桌面代码至嵌入式平台,或通过重新编译,反之亦然;
4)编译移除不常使用的组件与功能;
5)利用系统资源并实现本地化性能;
6)开发嵌入式设备犹如开发桌面系统一样轻松简单。
QT 除了提供所有工具以及 API 与类库,(如Webkit) 外, QT for Embedded Linux 还提供用于最优化嵌入式开发环境的主要组件。
2、紧凑高效的视窗系统(QWS):QT 构建在标准的 API 上,应用于嵌入式 Linux 设备,并带有自已的紧凑视窗系统。基于 QT 的应用程序直接写入 Linux帧缓冲,解除了您对 X11 视窗系统的需求。具有减少内存消耗,占位更小,可利用硬件加速图形的优势,可编译移除不常使用的组件与功能等特点。
3、虚拟帧缓冲(QVFb):QT for Embedded Linux 提供一个虚拟帧缓冲器,可以采用点对逐像素匹配物理设备显示。具有真实的测试构架,在桌面系统上嵌入式测试,模拟物理设备显示的宽度、高度与色深等特点。
4、进程间通讯(IPC): IPC (进程间通讯)可以创建丰富的多应用程序用户体验。定义进程间通讯的两个主要概念即:信道与消息。可以进程**并向信道发送消息,任何时候只要**到一个进程便可创建信道。
5、扩展的字体格式: QT 支持嵌入式 Linux 上的多种字体格式,包括:TrueType®、Postscript®Type1 与 QT 预呈现字体。 QT扩展了 Unicode 支持,包括:构建时自动数据抽取和运行时自动更新。另外 QT 还提供定制字体格式的插件,允许在运行时轻松添加新字体引擎。应用程序间的字体共享功能可以提高内存效率。
基本要求:
1)开发环境: Linux 内核 2.4 或更高; GCC版本 3.3 或更高;用于 MIPS® GCC 版本 3.4. 或更高。
2)占用存储空间:存储空间取决于配置,压缩后:1.7 - 4.1MB ,未压缩: 3.6 - 9.0MB。
3)硬件平台:易于载入任何支持带 C++ 编译器和帧缓冲器驱动 Linux 的处理器。支持 ARM®、x86®、MIPS® 、PowerPC®。
6、Mac平台
QT包括一套集成的开发工具,可加快在 Mac 平台上的开发。在编写 QT 时 ,并不需要去设想底层处理器的数字表示法、字节序或架构。要在 Apple 平台上支持 Intel 硬件,QT 客户只需重新编辑其应用程序即可。
7、Windows 平台
使用 QT ,只需一次性构建应用程序,无须重新编写源代码,便可跨多个 Windows 操作系统的版本进行部署。QT 应用程序支持 WindowsVista 、Server 2003 、XP 、NT4 、Me / 98 和 Windows CE。
8、Linux / X11 平台
QT包括一套集成的开发工具,可加快在 X11 平台上的开发。QT 由于是 KDE 桌面环境的基础,在各个 Linux 社区人尽皆知。几乎 KDE 中的所有功能都是基于 QT 开发的, 而且 QT 是全球社区成员用来开发成千上万的开源 KDE 应用程序的基础。
9、Windows CE / Mobile
QT 是用 C++ 开发的应用程序和用户界面框架。通过直观的 API ,您可以使用 QT 为大量的设备编写功能丰富的高性能应用程序。QT 包括一套丰富的工具集成与直观 的 API ,意味着 只须少数几行代码便可以更短的时间实现更高端的功能。
主要特点:
1)硬件依存性极小;
2)支持多数现有的 Windows CE 配置;
3)对于自定义的硬件配置亦轻松构建;
4)移植桌面代码至嵌入式平台,或通过重新编译,反之亦然;
5)编译移除不常使用的组件与功能;
6)利用系统资源并实现高性能;
7)开发嵌入式设备尤如开发桌面系统一样轻松简单。
QT 除了提供所有工具以及 API 与 类库外,Qt for Windows CE 还提供用于最优化嵌入式开发环境的附加功能
10、本地化和可定制的外观:QT 在使用时,可以支持 Windows Mobile 和 Windows CE 两种样式。在运行时,QT 应用程序将检测使用哪一种样式。采用 QT 样式表单,您只需花费用于传统 UI 风格的少许时间和代码行,便可以轻松定制您的应用程序外观。
特点:
1)基于 HTML 层叠式样式表(CSS);
2)适合于全部 widget;
3)任何熟悉 CSS技术的人员都可以定义复杂的样式。
11、先进的文本布局引擎:QT for Windows CE 支持 TrueType® 和点阵字体。同时 QT 还支持扩展的 Unicode 和从右至左的书写语言。QT 的富文本引擎增加了新的功能用于复杂的文本布局,包括制表和基本要:
1)开发环境:Microsoft® Visual Studio® 2005 (Standard Edition) 或更高ActivePerl 或更高 ActivePerl。
2)占用存储空间:紧凑配置 - 4.8 MB,全配置 - 8.4 MB;
3)操作系统:Windows CE 5 或更高, Windows Mobile 5 或更高;
4)硬件平台:支持ARM®, x86®,(在 SH4® 和 MIPS® 上编译)。
12、塞班平台(Symbian)
QT 通过和 S60 框架的集成为 Symbian 平台提供了支持。在最新版 的 QT SDK 1.1 中我们可以直接生成可以在塞班设备上运行的 sis 文件。
13、MeeGo 平台(Maemo 6 现更名为MeeGo)
QT 是一个功能全面的应用程序和用户界面框架,用来开发 Maemo 应用程序,也可跨各主要设备和桌面操作系统部署这些程序且无需重新编写源代码的。如果您在多数情况下开发适用于 Symbian 、 Maemo 或 MeeGo平台的应用程序,可以使用免费 LGPL 授权方式的 QT。
QT将为诺基亚设备运行 MeeGo(Harmattan) 提供依托,并可为所有即将推出的 MeeGo 设备中的应用程序开发提供 API ,为QT 开发人员提供了更多平台。不久,MeeGo 设备就会完成支持(X11)QT。
六、QT 类库
模块化 QT C++ 类库提供一套丰富的应用程序生成块(block),包含了生成高级跨平台应用程序所需要 的全部功能。
1、先进的图形用户界面(GUI):QT为您在桌面与嵌入式平台开发先进的 GUI 应用程序,带来所以需要的功能。QT使用所支持平台的本地化图形 API,充分利用系统资源并给予应用程序本地化的界面。
1)从按钮和对话框到树形图与表格都具有完整的控件(窗体);
2)自动缩放,字体、语言与屏幕定位识别布局引擎;
3)支持抗锯齿、矢量变形以及可缩放矢量图形 (SVG);
4)具有样式 API 和窗体样式表,可完全自定义用户界面;
5)支持嵌入式设备的硬件加速图形和多重显示功能;
2、基于 OpenGL®与OpenGL ®Es的3D图形 : OpenGL® 是一个标准的图形库,用于构建跨平台和支持硬件加速的高性能可视化应用程序。虽然 OpenGL 完美支持 3D 图形,但却不支持创建应用程序用户界面。QT 通过与 OpenGL 的紧密集成解决了这一难题。
1)在您的应用程序中轻松加入 3D图形;
2)在嵌入式 Linux 与 Windows CE 平台上使用 OpenGL ES 和 OpenGL 绘画引擎;
3)利用系统资源实现最佳图形性能;
4)支持Windows 平台上的 Direct3D®。
3、多线程:多线程编程是一个执行资源密集型操作而不会冻结应用程序用户界面的有效典范。QT 的跨平台多线程功能简化了并行编程,另外它附加的同步功能可以更加轻松地利用多核架构。
1)管理线程、数据和对象更加轻松;
2)基于 QT 的信号与槽,实现跨线程类型安全的对象间通讯;
3)高端 API 可以编译多线程程序而无须使用低端基元。
4、嵌入式设备的紧凑视窗系统:QT 构建在标准的 API 基础上 ,用于具有轻量级 window 系统的嵌入式 Linux 设备。基于 QT 的应用程序直接写入 Linux 帧缓冲,解除了您的对 X11 视窗系统的需求。
1)减少内存消耗,内存占用更小;
2)可以编译移除不常使用的组件与功能;
3)可以利用硬件加速图形;
4)在桌面系统上的虚拟帧缓冲可用于嵌入式开发与调试。
5、对象间通讯:在开发用户图形界面中,一个常见的、重复发生系统崩溃与问题的症结根源是如何在不同组件之间进行通信。对于该问题,Qt 的解决方案是信号与槽机制,即执行Observer设计模式。我们可以简单理解为当特殊事件发生的时候,信号就被发出了,一个插槽就是一个函数,被称作特定信号的响应。
1)信号与槽机制是类型安全的(type safe);
2)任意信号都可以连接任意或多个插槽,或跨多个线程;
3)简化真正的组件编程。
6、2D图形:QT给您提供一个功能强大的 2D 图形画布,用以管理和集成大量的图形元素。
高精度可视化大量元素:
1)将窗体互动嵌入至图形场景中;
2)支持缩放、旋转、动画与 ** 变换。
7、多媒体框架:Qt使用 Phonon多媒体框架为众多的多媒体格式提供跨桌面与嵌入式操作系统的回放功能。Phonon可以轻松将音频与视频回放功能加入到Qt应用程序当中,并且在每个目标平台上提取多媒体格式与框架。
1)以本 ** 立的方式提供多媒体内容;
2)从本地文件读取媒体或读取网络上的流媒体
3)提取Mac上的 QuickTime® ,Windows 上的DirectShow® 以及 Linux 上的Gstreamer
1)将web与本地内容和服务整合在单一的富应用程序当中
2)快速创建整合实时web内容与服务的应用程序
3)使用集成在本地代码中的 HTML 与Java Script
4)完全控制跨平台的浏览器环境
1)完整的客户/服务器插口提取
2)支持 HTTP,FTP,DNS 与异步 HTTP 1.1
3)无论HTML 和XML或图象与媒体文件,它都可以存取所有类型的数据
1)仅需少数几行代码便可实现先进的 XML 查询
2)完全支持 XQuery 1.0 和 XPath 2.0
3)在您自己的应用程序中从XML查询、抽取和转换数据
1)基于ECMA 标准的脚本语言(ECMAScript 3是JavaScript1.5的基础)
2)为简化的对象间通讯使用Qt的信号与槽机制
3)开创新的契机将脚本与您的Qt应用程序相集成
1)支持所有主要的数据库驱动
2)以多种视图或数据识别表单方式显示数据
七、QT Quick 介绍
QT Quick 是在 QT4.7 中被引进的一项技术。QT Quick 是一种高级用户界面技术,开发人员和设计人员可用它协同创建动画触模式用户界面和应用程序。它由三部分构成:
1)QML:像JavaScrip 一样的声明式语言;
2)QT Creator :在QT IDE 中的直观工具;
3)QT Declarative :强大的 C ++模块。
1、主要组成:
1)QML :基于 JavaScript 的直观语言:QML 是一种简便易用的语言,开发人员与用户界面设计人员无需任何 C++知识,即可用其描绘出用户界面的外观和功能。
2)面向开发人员和设计人员的共享工具:QT Creator IDE 2.1版将集成一条丰富开发人员与用户界面设计人员可共享,用以创建和实施 QT Quick 项目的通用工具。
3)通过 C++ 推动 QML 应用程序:在QT 库中的全新 D eclarative 模块支持生成动态可定制的用户界面,以及通过 C++ 拓展 QML 应用程序。
2、功能特点:
1)快速开发动画式流畅多变的用户界面:通过直观的 QML 语言和一套丰富的 QMLElements——UI 和行为生成块——您可以快速创建出令人印象深刻的用户界面,比您想象的还要快。
2)无需 C++ 知识:如果您具有 JavaScript 的经验或掌握基本的网络技术 (如 HTML 和 CSS),您就可以通过 QML 取得非常不错的成果。
3)瞄准数以百万计的触摸屏设备:使用 Qt Quick,您可以为数以百万计的 Symbian 和 MeeGo 设备生成应用程序,或为各种类型的触摸屏消费类电子设备创建用户界面。
3、应用领域:
1)汽车信息娱乐系统 UI:Cybercom Group 的用户界面设计人员与开发人员尝试使用 Qt Quick 为其汽车信息娱乐平台设计 UI——并取得了令人满意的结果。
2)社交媒体电视:mixd.tv 使用 Qt Quick 为其跨平台网络电视应用程序创建 UI,其用户可以通过社交媒体频道访问和共享在线视频的内容。
3)联网汽车:Qt 的认证合作伙伴 Digia 很快学会了 Qt Quick 并用其创建出了包括导航、电话、游戏和音乐功能的高级汽车 UI。
1)出色的图像处理与表现能力:Qt Quick 2 提供了基于GL的工作模式,它包括一个粒子系统和一系列着色效果集合。Qt Quick 2 让复杂图形的细腻动画和变形处理变得更加容易,也确保了低端架构中2D和3D效果的平滑渲染效果和在高端架构中一样的出色。
2)更高效和灵活的研发: JavaScript和QML在保证对C++基础和Qt Widget支持上发挥着重要作用。Qt Webkit 2中一部分功能就在使用或者正考虑通过HTML 5,彻底的改变Qt
3)跨平台的移植变得更加简单:对于OS开发人员来说,由于基础模块和插件模块采用了新的架构,以及Qt跨平台性的继续强化,Qt已经能够运行在所有的环境中了。而我们的下一步计划:全面的支持iOS和Android系统,现在正在如火如荼的开发中。