首页| 行业标准| 论文文档| 电子资料| 图纸模型
购买积分 购买会员 激活码充值

您现在的位置是:团子下载站 > 其他 > Qt学习之路2.0版本的PDF电子书免费下载

Qt学习之路2.0版本的PDF电子书免费下载

  • 资源大小:2.18 MB
  • 上传时间:2021-07-12
  • 下载次数:0次
  • 浏览次数:111次
  • 资源积分:1积分
  • 标      签: Qt C++ API

资 源 简 介

Qt 是一个著名的 C++ 应用程序框架。你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件。使用 Qt,在一定程度上你获得的是一个“一站式”的解决方案:不再需要研究 STL,不再需要 C++ 的《string》,不再需要到处去找解析 XML、连接数据库、访问网络的各种第三方库,因为 Qt 自己内置了这些技术。   Qt 是一个跨平台的框架。跨平台 GUI 通常有三种实现策略:   1. API 映射:API 映射是说,界面库使用同一套 API,将其映射到不同的底层平台上面。大体相当于将不同平台的 API 提取公共部分。比如说,将 Windows 平台上的按钮控件和 Mac OS 上的按钮组件都取名为 Button。当你使用 Button 时,如果在Windows 平台上,则编译成按钮控件;如果在 Mac OS 上,则编译成按钮组件。这么做的好处是,所有组件都是原始平台自有的,外观和原生平台一致;缺点是,编写库代码的时候需要大量工作用于适配不同平台,并且,只能提取相同部分的 API。比如 Mac OS 的文本框自带拼写检测,但是 Windows 上面没有,则不能提供该功能。这种策略的典型代表是 wxWidgets。这也是一个标准的 C++ 库,和 Qt 一样庞大。它的语法看上去和 MFC 类似,有大量的宏。据说,一个 MFC 程序员可以很容易的转换到 wxWidgets 上面来。   2. API 模拟:前面提到,API 映射会“缺失”不同平台的特定功能,而 API 模拟则是解决这一问题。不同平台的有差异 API,将使用工具库自己的代码用于模拟出来。按照前面的例子,Mac OS 上的文本框有拼写检测,但是 Windows 的没有。那么,工具库自己提供一个拼写检测算法,让 Windows 的文本框也有相同的功能。API 模拟的典型代表是 wine —— 一个 Linux 上面的 Windows 模拟器。它将大部分 Win32API 在 Linux 上面模拟了出来,让 Linux 可以通过 wine 运行 Windows 程序。由此可以看出,API 模拟最大优点是,应用程序无需重新编译,即可运行到特定平台上。   另外一个例子是微软提供的 DirectX,这个开发库将屏蔽掉不同显卡硬件所提供的具体功能。使用这个库,你无需担心硬件之间的差异,如果有的显卡没有提供该种功能,SDK 会使用软件的方式加以实现。(关于举例,可以参考文末一段精彩的讨论。)   3. GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等。有些工具库利用这些基本函数,在不同绘制出自己的组件,这就是 GUI 模拟。GUI 模拟的工作量无疑是很大的,因为需要使用最基本的绘图函数将所有组件画出来;并且这种绘制很难保证和原生组件一模一样。但是,这一代价带来的优势是,可以很方便的修改组件的外观——只要修改组件绘制函数即可。很多跨平台的 GUI 库都是使用的这种   ----Qt 学习之路2----   - 3 -   策略,例如 gtk+(这是一个 C 语言的图形界面库。使用 C 语言很优雅地实现了面向对象程序设计。不过,这也同样带来了一个问题——使用大量的类型转换的宏来模拟多态,并且它的函数名一般都比较长,使用下划线分割单词,看上去和 Linux 如出一辙。gtk+ 并不是模拟的原生界面,而有它自己的风格,所以有时候就会和操作系   统的界面格格不入。),Swing 以及我们的 Qt。   Qt 和 wxWidgets 一样,也是一个标准的 C++ 库。但是它的语法类似于 Java 的 Swing,十分清晰,而且使用信号槽(signal/slot)机制,让程序看起来很明白——这也是很多人优先选择 Qt的一个很重要的原因。不过,所谓“成也萧何,败也萧何”。这种机制虽然很清楚,但是它所带来的后果是你需要使用 Qt 的 qmake 对程序进行预处理,才能够再使用 make 或者 nmake 进行正常的编译,并且信号槽的调用要比普通的函数调用慢大约一个数量级(Qt 4 文档中说明该   数据,但 Qt 5 尚未有官方说明)。Qt 的界面也不是原生风格的,尽管 Qt 使用 style 机制十分巧妙地模拟了原生界面。另外值得一提的是,Qt 不仅仅能够运行在桌面环境中,还可以运行   在嵌入式平台以及手机平台。   Qt 第一版于 1991 年由 Trolltech (奇趣科技)发布。后来在 2008 年,Nokia 斥资 1.5 亿美元收购 TrollTech,将 Qt 应用于 Symbian 程序开发。2012 年 8 月 9 日,Nokia 将 Qt 以400 万欧元的价格出售给 Digia。伴随着 Qt,一直有两种授权协议:商业授权以及开源授权。在 Qt 的早期版本,商业授权包含一些开源授权不提供的组件,但是在近期版本则不存在这个问题。以往人们对 Qt 的开源授权多有诟病。早期版本的 Qt 使用与 GPL 不兼容的协议授权,这直接导致了 KDE 与 GNOME 的战争(由于 Linux 使用 GPL 协议发布,GPL 协议具有传染性,作为 Linux 桌面环境的 KDE 却是基于与 GPL 不兼容的 Qt 开发,这就不遵守 GPL 协议)。不过,现在 Qt 的开源版本使用的是 GPLv3 以及 LGPL 协议。这意味着,你可以将 Qt 作为一个库连接到一个闭源软件里面。可以说,Qt 协议的争议已经不存在了。   3 Hello, world!   想要学习 Qt 开发,首先要搭建 Qt 开发环境。好在现在搭建 Qt 开发环境还是比较简单的。   我们可以到Qt 官方网站找到最新版本的 Qt。在Downloads 页面,可以看到有几个版本的 Qt:Qt SDK、Qt Library、Qt Creator 等等。它们分别是:    Qt SDK:包含了 Qt 库以及 Qt 的开发工具(IDE、i18n 等工具),是一套完整的开发环境。当然,这个的体积也是最大的(Windows 平台大约 1.7G,其它平台大约 780M)。如果仅仅为开发 Qt,建议选择这一项下载安装。安装方法很简单,同普通程序没有什么区别。所需注意的是,安装过程中可能能够提供选择是否安装源代码,是否安装 mingw 编译器(Windows),这个就按照需要进行选择即可。另外值得说   ----Qt 学习之路2----   - 4 -明的是,Qt SDK 通常比单独的 Qt 库版本要旧一些。比如现在 Qt 正式版是 4.8.2,但是 Qt SDK 的最新版 1.2.1 中包含的 Qt 是 4.8.1。    Qt Library:仅包含 Qt 库。如果您已经安装了 Qt 开发环境,为了升级一下 SDK中提供的 Qt 库版本,就可以安装这一个。安装过之后,应该需要在 IDE 中配置安装路径,以便找到最新版本的 Qt(如果不是覆盖安装的话)。    Qt Creator:基于 Qt 构建的一个轻量级 IDE,现在最新版是 2.5.2,还是比较好用的,建议使用 Qt Creator 进行开发。当然,如果你已经习惯了 VS2010 这样的工具,可以在页面最下方找到相应的 Addin。很多朋友希望阅读 Qt 代码以提高自己的开发水平。当然,Qt 的经典代码是 KDE,不过这个项目不大适合初学者阅读。此时,我们就可以选择阅读 Qt Creator 的代码,它的代码还是比较清晰的。   当我们安装完成 Qt 开发环境之后,就可以使用 Qt Creator 进行开发。在本系列中,豆子会一直使用这个 IDE 进行讲解。至于编译器,豆子一般会使用 mingw 或者 gcc。为了编译 Qt 5 的程序,你应该使用 gcc 4.5 以上的版本,这意味着,如果你是使用 Qt SDK 自带的 mingw,是不能编译 Qt 5 的程序的(因为这个自带的版本是 4.4),你应该升级 mingw 为 4.5 以上版本。   至此,我们已经有了 Qt 4 的完整开发环境。如果你想要开发 Qt 5,由于现在(2012 年 8 月)Qt 5 还处于测试阶段,并没有提供二进制库,所以我们需要使用 git 自己获取 Qt 5 的源代码自己编译(一般需要几个小时时间)。豆子非常不建议在 Windows 上编译 Qt 5,因为可能会出很多问题。如果你想尝试,可以参考这里。豆子提一句,在 Windows 上编译 Qt 5,需要安装 perl(并且要安装 GetOpt::Long 模块)、python 和 git,并且需要找到彼此路径。相比而言,Linux 上面就会简单很多。豆子建议,如果你想在 Windows 上尝试 Qt 5,可以考虑安装一个虚拟机,使用 Linux 平台;或者自己试着直接在 Windows 本地编译。豆子的环境是使用openSUSE。openSUSE 的Qt 5.0 Development Snapshots 已经提供了 Qt 5 二进制版本,免去了编译的过程。基于此,本文的 Qt 4 版本将在 Windows 平台上使用 mingw 进行测试;Qt 5版本将在 openSUSE 上使用 gcc 4.6 进行测试。在未来官方推出 Qt 5 Windows 平台的二进制版本,也不排除在 Windows 上面测试 Qt 5 代码。   在 Qt Creator 中,我们可以在菜单栏的工具-选项-构建和运行的“Qt 版本”和“工具链”这两个选项卡中配置 Qt Creator 所使用的 Qt 版本和编译器。这或许是最重要的步骤,包括添加新的 Qt版本以及以后的切换编译器或者 Qt 升级等。
VIP VIP