Qt5学习资料.pdf

5星(超过95%的资源)
所需积分/C币:50 2014-06-22 13:27:43 2.18MB PDF
32
收藏 收藏
举报

该文档包括基本知识的介绍、常用GUI 组件的介绍、常用技术的介绍等;内容上将结合Qt 4 与Qt 5 两个部分。在可以预见的未来,Qt 4 的程序,无论从旧代码的维护,还是新的程序的出现,都不会立刻退出历史舞台。Qt 5 也并不像Qt 4 与Qt 3 的升级那样的激烈,因此,我觉得有必要同时介绍这两个版本。当然,我并不确定这种“同时”会不会一直持续到系列的最末,因为也有可能Qt 5 以一种摧枯拉朽之势,将Qt 4 扫出历史舞台。这一切尚未可知。鉴于此,豆子才不将本系列命名为《Qt 5 学习之路》,而是以第二版称呼。 ……
Qt学习之路2 绘制设备 30 Graphics View Framework 107 31贪吃蛇游戏(1) 110 32贪吃蛇游戏(2) l14 33贪吃蛇游戏(3)… ……………………4120 34贪吃蛇游戏(4)… ………124 35文件 127 36二进制文件读与 37文本文件读写… 35 38存储容器 39遍历容器 ‘. 40隐式数据共享 151 4 I model/view架构 Qt学习之路2 1序 51CTO上面曾经有过这么一个系列,具体是Qt的入门教程。当吋强调过,那些文章大致是根 据《C++ GUI Programming with Qt42 nd editon》编写的。时过境迁,现在回头看看,已经 过去了整整三年。如果你仔细看下那篇系列文章就会发现,发表时间竟然是2009年8月20 日;而今天是2012年8月20日。或者是冥冥之中的感觉,竞然选择了同一个时间 现在,按照年前做过的计划,我会来履行我的承诺,重新修订《Qt学习之路》。不过,豆子计 划将其取名为《¢学习之路2》,或者就当作是2.0版本吧! 从网上的反应米看,这个系列的文章获得了很多读者的认可。时间已经过士三年,Q的发展也 有了翻天覆地的变化。如果不受出售事件的影响,Qt5即将在2012年9月发布。而现在, 最新代码库里面凵经有了beta。这意味着,ot5的特性凵经确定,不会再有大的改变。所以 我觉得,我已经可以着手进行一次修订 木次修订的原则是,结构上大致保持前一版本的顺序不变,包括基木知识的介绍、常用GUI组 件的介绍、常用技术的介绍等;内容上将结合Qt4与Qt5两个部分。在可以预见的未来,qt 4的程序,无论从旧代码的维护,还是新的程序的出现,都不会立刻退出历史舞台。Qt5也并 不像Qt4与Qt3的升级那样的激烈,因此,我觉得有必要同时介绍这两个版本。当然,我并 不确定这种同吋″会不会一直持续到系列的最末,因为也有可能Qt5以一种摧枯拉杓之势,将 Qt4扫出历史舞台。这一切尚未可知。鉴于此,豆子才不将本系列命名为《Qt5学习之路》, 而是以第二版称呼。 另外,对于上一版本,豆子还是很内疚的。因为并不是一个完整的介绍,Qt的很多优秀特性, 比如XML,比如数据库,比如网络,都没有进行介绍。这要是因为当刑接触Qt也并不是很 多,很多特性没有使用过,即便抄书写出来,也会觉得心里没底。现在豆子对Qt了解史多 所以,在这次修订中,豆子将竭尽全力将一些用到的特性介绍一下。 至于本系列的定位,豆子主张将其定位于入门教程。不过,如果可能的话,豆子希望能够在其中 穿插一些有关αt实现的相关内容。这部分内容肯定不会是基础的,比如信号槽的实现等。不 过,对于这一点豆子也不敢肯定,毕竞要接触到实现层面上的东西,总要花费一定时间和精力的。 这次修订,没有了《C++ GUI Programming with Qt4》这木书作为提纲,一切都将按照自己的 思路來。豆孑将尽量跟随这本书的顺序,同时希望能够按照Qt5的思路,按照模块来介绍Qt。 当然,作为修订版,本次修订的着重点在于Qt5,Qt4的内容将追随Qt5进行介绍。同前文 一样,本系列也会参考《C++ GUI Programming with qt4》一书,不过鉴于木书的某些自认为 不合适的组织(比如以一个过大的项目作为示例),本版更多会直接参考t文档。很多原理 性内容,可能会直接来源于文档,所以,感兴趣的朋友建议直接翻阅文档,以文档原文为准。 Qt学习之路2 说了这么多,总之就是,尽量完成篇相对高质量的教程。如果有任何建议或者意见,欢迎给豆 子留言。 以此,是为序。 2Qt简介 Qt是一个著名的C++应用稞序框架。你并不能说它只是一个GUI库,因为Qt十分庞大 并不仅仅是GUI组件。使用Qt,在一定程度上你获得的是一个”一站式"的解决方案:不再需 要研究STL,不再需要C++的< string>,不再需要到处去找解析ⅩML、连接数据斥、访闩网 络的各种第二方库,因为Qt自己内置了这些技术。 αt是个跨平台的框架。跨平台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模拟 的典型代表是wne一一个 Linux上面的 Windows模拟器。它将人部分Win32 API在 Linux上面模拟了出来,让 Linux可以通过wine运行 Windows程序。由 此可以看出,API模拟最大优点是,应用程序无需重新编译,即可运行到特定平台上 另外一个例子是微软提供的 Direct,这个开发库将屏蔽掉不同显卡硬件所提供的具 体功能。使用这个库,你无需担心硬件之间的差异,如果有的显卡汝有提供该种功能 SDK会使用软件的方式加以实现。(关于举例,可以参考文一段精彩的讨论。) 3.GUI模拟:仟何平台都提供了图形绘制函数,例妇画点、画线、画面等。有些工 具库利用这些基木函数,在不同绘制出自己的组件,这就是GUI模拟。GUI模拟的 L作量无疑是很大的,因为需要使用最基本的绘图函数将所有组件画出来;并且这种 绘制很难保证和原生组件一模一样。但是,这一代价带来的优势是,可以很方便的修 改组件的外观——只要修改组件绘制函数即可。很多跨平台的GUI库都是使用的这种 Qt学习之路2 策略,例如q比k+(这是一个C语言的图形界面库。使用C语言很优雅地实现了面 向对象程序设计。不过,这也同样带米了一个问题——使用大量的类型转换的宏米模 拟多态,并目它的函数名一般都比较长,使用下划线分割单词,看上去和 Linux如出 辙。gk+并不是模拟的原生界面,而有它自己的风格,所以有时候就会和操作系 统的界面格格不入。), Swing以及我们的Qt。 Qt和 wXWidgets一样,也是一个标准的C++库。但是它的语法类似于Java的 Swing,十 分清晰,而且使用信号槽( signal/slot)机制,让程序看起来很明白一—这乜是很多人优先选祥Qt 的一个很重要的原因。不过,所谓`成也萧何,败也萧何″。这种机制虽然很清楚,但是它所带来 的后果是你需要使用Qt的 gmake对程序进行预处理,才能够再使用make或者 nmake进 行正常的编译,并且信号槽的调用要比旾通的函数调用慢大约一个数量级(Qt4文档中说明该 数据,但Q5尚未有官方说明)。qt的界面也不是原生风格的,尽管αt使用stye机制十 分巧妙地模拟了原生界面。另外值得一提的是,¢t不仅仅能够运行在桌面环境中,还可以运行 在嵌入式平台以及手机平台。 Qt第一版于1991年由 Trolltech(奇趣科技)发布。后米在2008年,Noka斥资1.5亿 美元收购 TrollTech,将Qt应用于 Symbian程序开发。2012年8月9日,Noka将Qt以 400万欧元的价格出售给 Digia 伴随着Qt,一直有两种授权协议:商业授权以及开源授权。在Qt的早期版本,商业授权包含 些开源授权不提供的组件,但是在近期版本则不存在这个问题。以往人们对Qt的开源授权 多有诟病。早期版本的¢t使用与GPL不兼容的协议授权,这直接导致了KDE与 GNOME的 戕争(由于 Linux使用GPL协议发布,GPL协议具有传染性,作为 Linux桌面环境的KDE却 是基于与GPL不兼容的Qt开发,这就不遵守GPL协议)。不过,现在Qt的开源版本使用 的是GPLv3以及LGPL协议。这意味着,你可以将Qt作为一个库连接到一个闭源软件里面。 可以说,Qt协议的争议已经不存在了。 3 Hello. world! 想要学习¢t开发,首先要搭建αt开发环境。好在现在搭建α开发环境还是比较简单的。 我们可以到Qt官方网站找到最新版本的Qt在 Downloads页面,可以看到有几个版本的Qt: Qt SDK、 Qt Library、 Qt Creator等等。它们分别是 ·tSDK:包含了¢斥以及qt的开发工具(IDE、i18n等工具),是套完整 的开发环境。当然,这个的体积也是最大的( Windows平台大约1.7G,其它平台大 约780M)。如果仅仅为开发Qt,建议选择这一项下载安装。安装方法很简单,同普 通程序没有什么区别。所需注意的是,安装过程中可能能够提供选择是否安装源代码, 是否安装 mIngw编译器( Windows),这个就按照需要进行选择即可。另外值得说 Qt学习之路2 明的是, Qt SDK通常比单独的Qt库版本要旧些。比如现在Qt正式版是4.8.2 但是 Qt SDK的最新版1.2.1中包含的Qt是4.8.1 Qt Library:仅包含qt库。如果您已经安装了¢t开发环境,为了升级一下SDK 中提供的Qt库版本,就可以安装这一个。安装过之后,应该需要在IDE中配置安 装路径,以便找到最新版本的¢t(如果不是覆盖安装的话)。 · Qt Creator:基于q构建的一个轻量级IDE,现在最新版是2.5.2,还是比较好 用的,建议使用 Qt Creator进行开发。当然,如果你已经习惯了ⅤS2010这样的工 具,可以在页面最下方找到相应的Adn。很多朋友希望阅读Qt代码以提高自凵的 开发水平。当然,Qt的经典代码是KDE,不过这个项目不大适合初学者阅读。此时, 我们就可以选择阅读 Qt Creator的代码,它的代码还是比较清晰的。 当我们安装完成¢t开发环境之后,就可以使用 t Creator进行丌发。在本系列中,豆子会一 直使用这个IDE进行讲解。至于编译器,豆子一般会使用 mingw或者gcc。为了编译Qt5的 程序,你应该使用gcc4.5以上的版本,这意味着,如果你是使用 Qt SDK自带的 mingw,是」 不能编译Ωt5的程序的(因为这个自带的版本是4.4),你应该升缴 mingw为4.5以上版 本 全此,我们已经有了Ωt4的完整开发环境。如果你想要开发Qt5,由于现在(2012年8月) ¢t5还处于测试阶段,并没有提供二进制库,所以我们需要使用qit自己汏取Qt5的源代码 自己编译(一般需要几个小时时间)。豆子非常不建议在 Windows上编译Qt5,因为可能会 出很多问题。如果你想尝试,可以参考这里。豆子提一句,在 Windows上编译Qt5,需要安 裝per(并且要安装 Getopt:Long模块)、 python和qit,并且需耍找到彼此路径。相比而 言, Linux上面就会简单很多。豆子建议,如果你想在 Windows上尝试Qt5,可以考虑安裝 个虚拟机,使用 Linux平台:或者自己试着直接在 Windows本地编译。豆子的环境是使用 openSUSE。 openSUsE的qt5.0 Development Snapshots凵经提供了t5二进制版本,免去 了编译的过程。墓子此,本文的Q4版本将在 Windows y台上用miyw进行测试;Qt5 版本将在0 cenSUs上使9CC4.6进行测讯。在未来方推作Qt5WmW平台的二进制 版本,也不拼除在Mdow上面测试Q5代 在 Qt Creator中,我们可以在菜单栏的工具-选项-构建和运行的t版本”和工具链“这两个选 项卡中配置 Qt Creator所使用的¢t版本和编译器。这或许是最重要的步骤,包括添加新的Qt 版本以及以后的切换编译器或者Qt升级等 下面尝试开发第一个Qt项目: Helloworld。在 Qt Creator中新建一个工程: 文牛编辑(E)构建(B)调试D)工具0 D新建文件或工程 Ctrl+N 打开文件或工程 Ctrl+o 用…打开文件 最近访问的文件 最近使用的项目 Sessions Qt学习之路2 点击这个"新建文件或工程",在左侧选择项目- Applications,中间选择 Qt Gui应用,然后点击选 择..": D新建 选挥一个模板 Desktop Templates 项目 Qt Gui应用 健一个桌面Qt应用,包含一个基于qt设计师 Applications 4 Qt Quick Application(Built -in Element! I)的主面体 Libraries 4 Qt Quick Application( rom Exsting Q预选一个可用的桌面版本用于偏译程序 其他项目 Qt4控制台应用 Supported Platforms: Deact op Non-Qt Project 5 HTMLS愈用 Import Proj 文件和 低要 选择C联消 在弹出的对话框中填写名称、创建路径等信息 QtGu应用 项目介绍和位置 命位置 目标 本向导将ρ健一个Qt4U应用项目,应用程序认继承自 YApplacat1on并且包含一个空白的体 He⊥⊥ocx14 仓健路径:E; □设为默认的工程路径 「b伤消 Qt学习之路2 点击下步",选择该工程的编译器。这里我们只选择 mingw调试即可(在以后的项目中,根 据自己的需要选择。) Shadow build的含义是"影子构建",即将构建生成的文件不放在源代码 文件夹下。这样可以最大地保持源代码文件夹的整洁 QtGu应用 目标设置 ot creator司以为工程e1lr14设置如下目标 i羊情 区桌面 详倩▲ Create build confi gurations:手动设置 2 Shadow build 四9:481 fer Desks-0gt8p调试式tw时学二21[萄 □t4.1 for Desktop-Nao0ts发布 for_ Deskt ep:v210_t「满览 t481tmlp-tm调式1.0-i_x_[ Qt4a1 for Desktop- MinGw (Qt sIr)发布1 for_Deskt-_tsnr[演英 下=步0取有 点击"下一步",可以选择生成的主窗口文件。不过在我们的简单示例中是不需要这么复杂的窗口 的,因此我们尽可能简单地选择,将N创建界面"的选择去除: E Qt Gui应用 类信息 位置 日标 指定你要健的源码文件的基本类信息。 命详情 共名c) MainYindov 基共() CMainvindos 头文件0:. invid.h a界面G): 界面文件): ivindo.i 下=步a联有 Qt学习之路2 终」到了最后一步。这里是在询问我们是否添加版本控制。对」我们的小项目当然是不需要的, 所以选择无”,然后点击"完成“即可 Qt Gui应用 项目管理 目标 为当前而目一个子面目( 添加至版本控制系统():佛 「e anase 要加的件 E:\t\Hel1owerldt ca:n, cPR mainwindow. cpp mainwindow.h Helloworld. pro 宾成)[联有 可以看到, Qt Creator帮助我们在 Helloworld项目文作夹下成了四个文件: main Cpp, mainwindow,cpp, mainwindow h和 HelloWorld pro。pro文件就是Qt工程文件( project file), 由 qmake处理,生成make程序所需耍的 makefile; main cpp里面就是个main函数,作 为应用程序的入口函数;其他两个文件就是先前我们曾经指定的文件名的文件。 我们将 maIn. cpp修改如下 Language: C++(Qt o#include <APplication> 1#include <QLabel sint main(int argc, char *argv [] 5 APplication app(argc, argv) 7 QLabc- laocl("Hello, world)i 8 label. shaw()i 10 return app. exec ()i 点击 Qt Creater左侧下面的绿色三角按钮即可运行(这里一共有三个按钮,从上到下分别是"运 行"、调试"和"构建”)。如果没有错误的话,就会看到运行结果:

...展开详情
试读 127P Qt5学习资料.pdf
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
beyonfu 谢谢分型,虽然已经过期但还是谢谢分享
2021-01-05
回复
郭华勇 不错,狠好的学习资料
2015-06-14
回复
wangkbox 非常不错的资料!
2015-01-20
回复
jlwan16 好资料,对学习和工作很用帮助
2014-11-03
回复
martinz 不错,很好的学习资料
2014-07-23
回复
回忆快乐往事 不错,很好,是个不错的QT5的资料
2014-07-23
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享精英

关注 私信
上传资源赚钱or赚积分
最新推荐
Qt5学习资料.pdf 50积分/C币 立即下载
1/127
Qt5学习资料.pdf第1页
Qt5学习资料.pdf第2页
Qt5学习资料.pdf第3页
Qt5学习资料.pdf第4页
Qt5学习资料.pdf第5页
Qt5学习资料.pdf第6页
Qt5学习资料.pdf第7页
Qt5学习资料.pdf第8页
Qt5学习资料.pdf第9页
Qt5学习资料.pdf第10页
Qt5学习资料.pdf第11页
Qt5学习资料.pdf第12页
Qt5学习资料.pdf第13页
Qt5学习资料.pdf第14页
Qt5学习资料.pdf第15页
Qt5学习资料.pdf第16页
Qt5学习资料.pdf第17页
Qt5学习资料.pdf第18页
Qt5学习资料.pdf第19页
Qt5学习资料.pdf第20页

试读结束, 可继续阅读

50积分/C币 立即下载