第0篇 开始学习Qt 与Qt Creator

导语

自从2009年十月我在博客上写了第一篇QtCreator系列教程到现在,断断续续一共写了四十八篇,涵盖了Qt基础、绘图、数据库、Qt Quick和网络等主要应用方面的内容。虽然其中的内容很基础,但这也正是入门的读者所想要的,现在这个系列的读者已经超过了3万,很感谢大家对我的支持。因为当时开始写教程时并没有想得那么系统,所以就成了想到哪写哪。在现在看来,上来第一篇就是helloworld的编写,从来没有涉及Qt的介绍,感觉这对于一个Qt系列的教程来说是个缺陷。所以,现在我补上了这第零篇,来对Qt和Qt Creator进行一个大体上的介绍,其实,下面的内容都是整理自Qt官方网站。

因为Qt Creator系列教程好像有半年没有更新了,很多网友问我还会不会写下去。这里告诉大家,还是以前的话,我们的教程会一直写下去的,直到什么时候呢?或许会持续到Qt已经没落到无人问津的时候吧!

最后再次感谢大家对该系列教程和我们yafeilinux.com网站的支持,谢谢大家!

--------------------yafeilinux 2011-2-23

更新信息:2012年5月,基于该系列教程的系列书籍已经出版,查看详情!

Qt官方信息

目录

  • 一、Qt与Qt Creator简介
  • 二、Qt功能与特性
  • 三、Qt Creator功能和特性
  • 四、Qt的历史
  • 五、Qt所支持的平台
  • 六、Qt类库
  • 七、Qt Quick介绍
  • 八、Qt授权
  • 九、Qt 5简介

正文

一、Qt与Qt Creator简介

Qt是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。

Qt Creator 是全新的跨平台Qt IDE,可单独使用,也可与 Qt 库和开发工具组成 一套完整的SDK. 其中包括:高级 C++ 代码编辑器,项目和生成管理工具,集成的上下文相关的帮助系统,图形化调试器,代码管理和浏览工具。

二、Qt功能与特性

  • 直观的 C++ 类库:模块化 Qt C++ 类库提供一套丰富的应用程序生成块 (block),包含了构建高级跨平台应用程序所需的全部功能。具有直观,易学、易用,生成好理解、易维护的代码等特点。
  • 跨桌面和嵌入式操作系统的移植性:使用 Qt,您只需一次性开发应用程序,就可跨不同桌面和嵌入式操作系统进行部署,而无须重新编写源代码,可以说Qt无处不在(QtEverywhere) 。
  • 使用单一的源代码库定位多个操作系统;
  • 通过重新利用代码可将代码跨设备进行部署;
  • 无须考虑平台,可重新分配开发资源;
  • 代码不受担忧平台更改影响的长远考虑 ;
  • 使开发人员专注于构建软件的核心价值,而不是维护 API 。
  • 具有跨平台 IDE 的集成开发工具:Qt Creator 是专为满足 Qt 开发人员需求而量身定制的跨平台集成开发环境 (IDE)。Qt Creator 可在 Windows、Linux/X11 和 Mac OS X 桌面操作系统上运行,供开发人员针对多个桌面和移动设备平台创建应用程序。
  • 在嵌入式系统上的高运行时间性能,占用资源少。

三、Qt Creator功能和特性

  • 复杂代码编辑器:Qt Creator 的高级代码编辑器支持编辑 C++ 和 QML (JavaScript)、上下文相关帮助、代码完成功能、本机代码转化及其他功能。
  • 版本控制:Qt Creator 汇集了最流行的版本控制系统,包括 Git、Subversion、Perforce、CVS 和 Mercurial。
  • 集成用户界面设计器:Qt Creator 提供了两个集成的可视化编辑器:用于通过 Qt widget 生成用户界面的 Qt Designer,以及用于通过 QML 语言开发动态用户界面的 Qt Quick Designer*。
  • 项目和编译管理 :无论是导入现有项目还是创建一个全新项目,Qt Creator 都能生成所有必要的文件。包括对 cross-qmake 和 Cmake 的支持。
  • 桌面和移动平台:Qt Creator 支持在桌面系统和移动设备中编译和运行 Qt 应用程序。通过编译设置您可以在目标平台之间快速切换。
  • Qt 模拟器:Qt模拟器是诺基亚 Qt SDK的一部分,可在与目标移动设备相似的环境中对移动设备的 Qt 应用程序进行测试。

四、Qt的历史

  • 1996年Qt 上市
  • Qt 已成为数以万计商业和开源应用程序的基础
  • Qt 的软件授权机制具有经受市场检验的双重授权(开源与商业)模式
  • Qt Software 的前身为 Trolltech(奇趣科技)。 Trolltech (奇趣科技)始创于1994年
  • Trolltech (奇趣科技)于2008年6月被 Nokia 收购,加速了其跨平台开发战略
  • 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 还提供用于最优化嵌入式开发环境的主要组件。

  • 紧凑高效的视窗系统 (QWS):Qt 构建在标准的 API 上,应用于嵌入式 Linux 设备,并带有自己的紧凑视窗系统。基于 Qt 的应用程序直接写入Linux 帧缓冲,解除了您对 X11 视窗系统的需求。具有减少内存消耗,占位更小,可利用硬件加速图形的优势,可编译移除不常使用的组件与功能等特点。
  • 虚拟帧缓冲 (QVFb):Qt for Embedded Linux 提供一个虚拟帧缓冲器,可以采用点对点逐像素匹配物理设备显示。具有真实的测试构架,在桌面系统上嵌入式测试,模拟物理设备显示的宽度、高度与色深等特点。
  • 进程间通讯 (IPC) :IPC (进程间通讯)可以创建丰富的多应用程序用户体验。定义进程间通讯的两个主要概念即:信道与消息。可以进程并向信道发送消息,任何时候只要到一个进程便可创建信道。
  • 扩展的字体格式:Qt 支持嵌入式 Linux 上的多种字体格式,包括:TrueType®, Postscript®Type1 与 Qt 预呈现字体。Qt 扩展了Unicode 支持,包括:构建时自动数据抽取和运行时自动更新。另外Qt还提供定制字体格式的插件,允许在运行时轻松添加新字体引擎。应用程序间的字体共享功能可以提高内存效率。

基本要求:

  • 开发环境:Linux 内核 2.4 或更高;GCC 版本 3.3 或更高;用于 MIPS® GCC 版本 3.4. 或更高。
  • 占用存储空间:存储空间取决于配置,压缩后: 1.7 - 4.1 MB,未压缩: 3.6 - 9.0 MB 。
  • 硬件平台:易于载入任何支持带 C++ 编译器和帧缓冲器驱动Linux 的处理器。支持 ARM®,x86®, MIPS®, PowerPC® 。

2.Mac 平台

Qt 包括一套集成的开发工具,可加快在 Mac 平台上的开发。在编写 Qt 时,并不需要去设想底层处理器的数字表示法、字节序或架构。要在 Apple平台上支持 Intel 硬件,Qt 客户只需重新编辑其应用程序即可。

3.Windows平台

使用 Qt,只需一次性构建应用程序,无须重新编写源代码,便可跨多个 Windows操作系统的版本进行部署。Qt应用程序支持 WindowsVista、Server 2003、XP、NT4、Me/98 和 Windows CE。

4.Linux/X11平台

Qt 包括一套集成的开发工具,可加快在 X11 平台上的开发。Qt 由于是 KDE 桌面环境的基础,在各个 Linux 社区人尽皆知。几乎 KDE 中的所有功能都是基于 Qt 开发的, 而且 Qt 是全球社区成员用来开发 成千上万的开源 KDE 应用程序的基础。

5.Windows CE/Mobile

Qt 是用 C++ 开发的应用程序和用户界面框架。通过直观的 API,您可以使用 Qt 为大量的设备编写功能丰富的高性能应用程序。Qt 包括一套丰富的工具集与直观的API,意味着只须少数几行代码便可以更短的时间实现更高端的功能。

主要特点:1.硬件依存性极小;2.支持多数现有的 Windows CE 配置;3. 对于自定义的硬件配置亦轻松构建;4. 移植桌面代码至嵌入式平台,或通过重新编译,反之亦然;5. 编译移除不常使用的组件与功能;6. 利用系统资源并实现高性能;7.开发嵌入式设备尤如开发桌面系统一样轻松简单。

Qt 除了提供所有 工具 以及 API 与 类库 外,Qtfor Windows CE 还提供用于最优化嵌入式开发环境的附加功能。

  • 本地化和可定制的外观:Qt 在使用时,可以支持 Windows Mobile 和 Windows CE 两种样式。 在运行时,Qt 应用程序将检测使用哪一种样式。 采用 Qt 样式表单,您只需要花费用于传统 UI 风格的少许时间和代码行,便可以轻松定制您的应用程序外观。特点:基于HTML 层叠式样式表 (CSS);适用于全部 widget;任何熟悉 CSS 技术的人员都可以定义复杂的样式。
  • 先进的文本布局引擎:Qt for Windows CE 支持 TrueType® 和点阵字体。同时 Qt 还支持扩展的 Unicode 和从右至左的书写语言。Qt 的富文本引擎增加了新的功能用于复杂的文本布局,包括制表和路径追踪,以及环绕图形的文本。

基本要求:

  • 开发环境: Microsoft® Visual Studio® 2005 (Standard Edition) 或更高ActivePerl 。
  • 占用存储空间:紧凑配置 - 4.8 MB,全配置 - 8.4 MB。
  • 操作系统:Windows CE 5 或更高,Windows Mobile 5 或更高。
  • 硬件平台:支持 ARM®, x86®,(在 SH4® 和 MIPS® 上编译) 。

6.塞班平台(Symbian)

Qt 通过和S60 框架的集成为 Symbian平台提供了支持。在最新版的QtSDK 1.1中我们可以直接生成可以在塞班设备上运行的sis文件。

7.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,充分利用系统资源并给予应用程序本地化的界面。

  • 从按钮和对话框到树形视图与表格都具有完整的控件(窗体)
  • 自动缩放,字体、语言与屏幕定位识别布局引擎
  • 支持抗锯齿、矢量变形以及可缩放矢量图形 (SVG)
  • 具有样式API和窗体样式表,可完全自定义用户界面
  • 支持嵌入式设备的硬件加速图形和多重显示功能

2.基于OpenGL ®与OpenGL ®Es的3D图形:OpenGL® 是一个标准的图形库,用于构建跨平台和支持硬件加速的高性能可视化应用程序。虽然OpenGL完美支持3D图形,但却不支持创建应用程序用户界面。Qt通过与OpenGL 的紧密集成解决了这一难题。

  • 在您的应用程序中轻松加入3D图形
  • 在嵌入式Linux 与Windows CE 平台上使用OpenGL ES和OpenGL绘画引擎
  • 利用系统资源实现最佳图形性能
  • 支持Windows 平台上的Direct3D®

3.多线程:多线程编程是一个执行资源密集型操作而不会冻结应用程序用户界面的有效典范。Qt的跨平台多线程功能简化了并行编程,另外它附加的同步功能可以更加轻松地利用多核架构。

  • 管理线程、数据和对象更加轻松
  • 基于Qt的信号与槽,实现跨线程类型安全的对象间通讯
  • 高端API可以编译多线程程序而无须使用底端基元

4.嵌入式设备的紧凑视窗系统:Qt构建在标准的 API基础上,用于具有轻量级window系统的嵌入式 Linux 设备。基于 Qt的应用程序直接写入 Linux 帧缓冲,解除了您对 X11 视窗系统的需求。

  • 减少内存消耗,内存占用更小
  • 可以编译移除不常使用的组件与功能
  • 可以利用硬件加速图形
  • 在桌面系统上的虚拟帧缓冲可用于嵌入式开发与调试

5.对象间通讯:在开发用户图形界面中,一个常见的、重复发生系统崩溃与问题的症结根源是如何在不同组件之间进行通信。对于该问题,Qt 的解决方案是信号与槽机制,即执行Observer设计模式。我们可以简单理解为当特殊事件发生的时候,信号就被发出了,一个插槽就是一个函数,被称作特定信号的响应。

  • 信号与槽机制是类型安全的(type safe)
  • 任意信号都可以连接任意或多个插槽,或跨多个线程
  • 简化真正的组件编程

6.2D图形:Qt给您提供一个功能强大的2D图形画布,用以管理和集成大量的图形元素。

  • 高精度可视化大量元素
  • 将窗体互动嵌入至图形场景中
  • 支持缩放、旋转、动画与变换

7.多媒体框架:Qt使用

Phonon多媒体框架为众多的多媒体格式提供跨桌面与嵌入式操作系统的回放功能。Phonon可以轻松将音频与视频回放功能加入到Qt应用程序当中,并且在每个目标平台上提取多媒体格式与框架。

  • 以平立的方式提供多媒体内容
  • 从本地文件读取媒体或读取网络上的流媒体
  • 提取Mac上的 QuickTime® ,Windows 上的DirectShow® 以及 Linux 上的Gstreamer

8.WebKit集成:Qt WebKit集成,即Qt集成了WebKit功能,WebKit是KDE项目下基于 KHTML的开放源web浏览器引擎。目前 Apple®,Google™ 与Nokia等公司使用Qt WebKit集成。

  • 将web与本地内容和服务整合在单一的富应用程序当中
  • 快速创建整合实时web内容与服务的应用程序
  • 使用集成在本地代码中的 HTML 与Java Script
  • 完全控制跨平台的浏览器环境

9.网络连接:Qt 让您网络编程更简单,并支持跨平台网络编程。

  • 完整的客户/服务器插口提取
  • 支持 HTTP,FTP,DNS 与异步 HTTP 1.1
  • 无论HTML 和XML或图象与媒体文件,它都可以存取所有类型的数据

10.XML:Qt 为XML 文件以及SAX 和 DOM 协议的C++实现,提供了一个流媒体文件读写器。同时 Qt 还包含了 XQuery – 一个简单的类似 SQL的查询语言,用于解析XML文件来选择和聚合所需要的XML元素,并且将它们转换成XML输出或其它格式的输出。

  • 仅需少数几行代码便可实现先进的 XML 查询
  • 完全支持 XQuery 1.0 和 XPath 2.0
  • 在您自己的应用程序中从XML查询、抽取和转换数据

11.脚本引擎:Qt 包含一个完全集成 ECMA 标准的脚本引擎。 QtScript 提供 QObject 集成,把 Qt的信号与槽机制整合成脚本,并且实现了C++ 与脚本的集成。

基于ECMA 标准的脚本语言(ECMAScript 3是JavaScript1.5的基础)

  • 为简化的对象间通讯使用Qt的信号与槽机制
  • 开创新的契机将脚本与您的Qt应用程序相集成

12.数据库:Qt 帮助您将数据库与您的Qt应用程序无缝集成。Qt支持所有主要的数据驱动,并可让您将SQL发送到数据库服务器,或者让 Qt SQL类自动生成 SQL 查询。

  • 支持所有主要的数据库驱动
  • 以多种视图或数据识别表单方式显示数据

七、Qt Quick介绍

Qt Quick是在Qt4.7中被引进的一项技术。Qt Quick 是一种高级用户界面技术,开发人员和设计人员可用它协同创建动画触摸式用户界面和应用程序。它由三部分构成:1.QML:像 JavaScript 一样的声明式语言;2. Qt Creator:在 Qt IDE中的直观工具;3. Qt Declarative:强大的 C++ 模块。

1.主要组成:

  • QML:基于 JavaScript 的直观语言 :QML 是一种简便易用的语言,开发人员与用户界面设计人员无需任何 C++ 知识,即可用其描绘出用户界面的外观和功能。
  • 面向开发人员和设计人员的共享工具:Qt Creator IDE2.1 版将集成一套开发人员与用户界面设计人员可共享,用以创建和实施 Qt Quick 项目的通用工具。
  • 通过 C++ 推动 QML 应用程序:在 Qt 库中的全新Declarative 模块支持生成动态可定制的用户界面,以及通过 C++ 拓展 QML 应用程序。

2.功能特点:

  • 快速开发动画式流畅多变的用户界面:通过直观的 QML 语言和一套丰富的 QMLElements——UI 和行为生成块——您可以快速创建出令人印象深刻的用户界面,比您想象的还要快。
  • 无需 C++ 知识:如果您具有 JavaScript 的经验或掌握基本的网络技术 (如 HTML 和 CSS),您就可以通过 QML 取得非常不错的成果。
  • 瞄准数以百万计的触摸屏设备:使用 Qt Quick,您可以为数以百万计的 Symbian 和 MeeGo 设备生成应用程序,或为各种类型的触摸屏消费类电子设备创建用户界面。

3.应用领域:

  • 汽车信息娱乐系统 UI:Cybercom Group 的用户界面设计人员与开发人员尝试使用 Qt Quick 为其汽车信息娱乐平台设计 UI——并取得了令人满意的结果。
  • 社交媒体电视:mixd.tv 使用 Qt Quick 为其跨平台网络电视应用程序创建 UI,其用户可以通过社交媒体频道访问和共享在线视频的内容。
  • 联网汽车:Qt 的认证合作伙伴 Digia 很快学会了 Qt Quick 并用其创建出了包括导航、电话、游戏和音乐功能的高级汽车 UI。

八、Qt授权

Qt Commercial Developer License

The Qt Commercial Developer License is the correctlicense to use for the development of proprietary and/or commercial softwarewith Qt where you do not want to share any source code.

You must purchase a Qt Commercial DeveloperLicense from us or from one of our authorized resellers before you startdeveloping commercial software as you are not permitted to begin yourdevelopment with an open source licensed Qt version and convert to thecommercially license version at a later . The Qt Commercial Developer Licenseincludes a restriction that prevents the combining of code developed with theQt GNU LGPL v. 2.1 or GNU GPL v. 3.0 license versi with commerciallylicensed Qt code.

Qt GNU LGPL v. 2.1 Version

This version is available for development ofproprietary and commercial applicati in accordance with the terms andconditi of the GNU Lesser General Public License version 2.1.

Support services are available separately forpurchase.

Qt GNU GPL v. 3.0 Version

This version is freely available for the developmentof open source software governed by the GNU General Public Licenseversion 3.0 (“GPL”).

Support services are available separately forpurchase.

License Comparison Chart

Commercial LGPL GPL
License cost License fee charged No license fee No license fee
Must provide source code changes to Qt No, modificati can be closed Source code must be provided Source code must be provided
Can create proprietary applicati Yes - No source code must be disclosed Yes, in accordance with the LGPL v. 2.1 terms No, applicati are subject to the GPL and source code must be made available
Updates provided Yes, immediate notice sent to those with a valid support and update agreement Yes, made available Yes, made available
Support Yes, to those with a valid support and update agreement Not included but available separately for purchase Not included but available separately for purchase
Charge for Runtimes Yes, for some embedded uses No No

九、Qt 5简介

Qt 5是进行Qt C++软件开发基本框架的最新版本,其中Qt Quick技术处于核心位置 。同时Qt 5能继续提供给开发人员使用原生QtC++实现精妙的用户体验和让应用程序使用OpenGl/OpenGL ES图形加速的全部功能。通过Qt 5.0提供的用户接口,开发人员能够更快的完成开发任务,针对触摸屏和平板电脑的UI转变与移植需求,也变得更加容易实现.

2012年12月19日,Digia宣布正式发行Qt 5.0。Qt 5.0是一个全新的流行于跨平台应用程序和用户界面开发框架的版本,可应用于桌面、嵌入式和移动应用程序。Qt 5 在性能、功能和易用性方面做了极大的提升,并将于明年可完全支持 Android 和 iOS 平台。Digia明确表明要使Qt 成为世界领先的跨平台开发框架。Qt 5在这个过程中具有重要的意义,它为应用程序开发人员和产品用户提供了最好的用户体验。Qt 5极大地简化了开发过程,让他们能够更快地为多个目标系统开发具有直观用户界面的程序。它还可以很平滑的过度到新的开发模式来满足触摸屏和 Tablet 的需求。

Qt 5的主要优势包括:图形质量;中低端硬件上的高性能;跨平台移植性;支持 C + + 11; QtWebKit 2 支持的 HTML5;大幅改进QML引擎并加入新的 API;易用性并与 Qt 4 版本兼容。

  • 出色的图像处理与表现能力:Qt Quick 2 提供了基于GL的工作模式,它包括一个粒子系统和一系列着色效果集合。Qt Quick 2 让复杂图形的细腻动画和变形处理变得更加容易,也确保了低端架构中2D和3D效果的平滑渲染效果和在高端架构中一样的出色。
  • 更高效和灵活的研发: JavaScript和QML在保证对C++基础和Qt Widget支持上发挥着重要作用。Qt Webkit 2中一部分功能就在使用或者正考虑通过HTML 5,彻底的改变Qt
  • 跨平台的移植变得更加简单:对于OS开发人员来说,由于基础模块和插件模块采用了新的架构,以及Qt跨平台性的继续强化,Qt已经能够运行在所有的环境中了。而我们的下一步计划:全面的支持iOS和Android系统,现在正在如火如荼的开发中。

Qt 通过使用 OpenGL ES,大大的增加了交付令人印象深刻的图形的能力 (OpenGL ES 是一个专门为嵌入式系统和移动设备而制定的图形应用程序编程接口)。这使它更容易开发和部署具有绚丽动画效果的 2D、3D 图形应用,这些应用在各种性能级别的嵌入式设备上得到平滑运行。例如手机、平板电脑和低成本的开发平台包括 Raspberry Pi。Qt5 新的模块化的代码库使得 Qt5 的跨平台移植性变得更简单。它包含了要点模块组和附加模块组,这种设计会减小系统代码库的尺寸。整合的 Qt 平台抽象层还强调跨平台移植性,开发人员可以通过启用开发简便性为多个目标部署。Qt 支持所有主要的桌面操作系统,包括 Windows,Mac OS X 和 Linux。嵌入式操作系统包括嵌入式 Linux、Windows 嵌入式以及最广泛部署实时操作系统的嵌入式设备——VxWorks、Neutrino 和 INTEGRITY和流行的移动操作系统等等。Qt WebKit 2 集成浏览器引擎,允许轻松集成 web 内容和应用程序。它将使 HTML5 开发人员感觉轻松自如,基于 Qt WebKit 2,能够开发出兼顾响应能力和本地代码强大功能的混合应用。这些应用可以提供大量的动态内容。

只需要一个简单的重新编译,就可以直接迁移之前为 Qt4 开发的应用程序。

结语

对于Qt 和Qt Creator有了大致的了解了,已经迫不及待想马上开始Qt的学习了吧!那么从我们的Qt Creator系列教程开始吧,让你快速进入Qt的开发行列之中!

results matching ""

    No results matching ""