没有合适的资源?快使用搜索试试~ 我知道了~
首页qt学习之路2(第二版 基于qt5)绝对是符合目录内容
经典入门教程《qt学习之路》 续作 新手qt学习宝典 基于qt 5 Qt+学习之路+2 1 序 2 Qt 简介 3 Hello, world! 4 信号槽 5 自定义信号槽 6 Qt 模块简介 7 MainWindow 简介 8 添加动作 9 资源文件 10 对象模型 11 布局管理器 12 菜单栏、工具栏和状态栏 13 对话框简介 14 对话框数据传递 15 标准对话框 QMessageBox 16 深入 Qt5 信号槽新语法 17 文件对话框 18 事件 19 事件的接受与忽略 20 event() 21 事件过滤器 22 事件总结 23 自定义事件 24 Qt 绘制系统简介 25 画刷和画笔 26 反走样 27 渐变 28 坐标系统 29 绘制设备 30 Graphics View Framework 31 贪吃蛇游戏(1) 32 贪吃蛇游戏(2) 33 贪吃蛇游戏(3) 34 贪吃蛇游戏(4) 35 文件 36 二进制文件读写 37 文本文件读写 38 存储容器 39 遍历容器 40 隐式数据共享 41 model/view 架构
资源详情
资源评论
资源推荐

Qt
学习之路 2

----Qt 学习之路 2----
目 录
1 序 ..................................................................................................................................................1
2 Qt 简介..........................................................................................................................................2
3 Hello, world!..................................................................................................................................3
4 信号槽...........................................................................................................................................9
5 自定义信号槽.............................................................................................................................13
6 Qt 模块简介................................................................................................................................18
7 MainWindow 简介......................................................................................................................22
8 添加动作.....................................................................................................................................25
9 资源文件.....................................................................................................................................30
10 对象模型...................................................................................................................................35
11 布局管理器...............................................................................................................................37
12 菜单栏、工具栏和状态栏.......................................................................................................41
13 对话框简介...............................................................................................................................44
14 对话框数据传递.......................................................................................................................47
15 标准对话框 QMessageBox .....................................................................................................49
16 深入 Qt5 信号槽新语法.........................................................................................................53
17 文件对话框...............................................................................................................................58
18 事件...........................................................................................................................................62
19 事件的接受与忽略...................................................................................................................65
20 event()........................................................................................................................................69
21 事件过滤器...............................................................................................................................71
22 事件总结...................................................................................................................................74
23 自定义事件...............................................................................................................................78
24 Qt 绘制系统简介......................................................................................................................81
25 画刷和画笔...............................................................................................................................84
26 反走样.......................................................................................................................................89
27 渐变...........................................................................................................................................91
28 坐标系统
...................................................................................................................................97

----Qt 学习之路 2----
29 绘制设备.................................................................................................................................104
30 Graphics View Framework ......................................................................................................107
31 贪吃蛇游戏(1)...................................................................................................................110
32 贪吃蛇游戏(2)...................................................................................................................114
33 贪吃蛇游戏(3)...................................................................................................................120
34 贪吃蛇游戏(4)...................................................................................................................124
35 文件.........................................................................................................................................127
36 二进制文件读写.....................................................................................................................131
37 文本文件读写.........................................................................................................................135
38 存储容器.................................................................................................................................139
39 遍历容器.................................................................................................................................144
40 隐式数据共享.........................................................................................................................151
41 model/view 架构.....................................................................................................................153

----Qt 学习之路 2----
- 1 -
1 序
51CTO 上面曾经有过这么一个系列,具体是 Qt 的入门教程。当时强调过,那些文章大致是根
据 《C++ GUI Programming with Qt 4, 2nd Editon》编写的。时过境迁,现在回头看看,已经
过去了整整三年。如果你仔细看下那篇系列文章就会发现,发表时间竟然是 2009 年 8 月 20
日;而今天是 2012 年 8 月 20 日。或者是冥冥之中的感觉,竟然选择了同一个时间。
现在,按照年前做过的计划,我会来履行我的承诺,重新修订《Qt 学习之路》。不过,豆子计
划将其取名为《Qt 学习之路 2》,或者就当作是 2.0 版本吧!
从网上的反应来看,这个系列的文章获得了很多读者的认可。时间已经过去三年,Qt 的发展也
有了翻天覆地的变化。如果不受出售事件的影响,Qt 5 即将在 2012 年 9 月发布。而现在,
最新代码库里面已经有了 beta。这意味着,Qt 5 的特性已经确定,不会再有大的改变。所以,
我觉得,我已经可以着手进行一次修订。
本次修订的原则是,结构上大致保持前一版本的顺序不变,包括基本知识的介绍、常用 GUI 组
件的介绍、常用技术的介绍等;内容上将结合 Qt 4 与 Qt 5 两个部分。在可以预见的未来,Qt
4 的程序,无论从旧代码的维护,还是新的程序的出现,都不会立刻退出历史舞台。Qt 5 也并
不像 Qt 4 与 Qt 3 的升级那样的激烈,因此,我觉得有必要同时介绍这两个版本。当然,我并
不确定这种“同时”会不会一直持续到系列的最末,因为也有可能 Qt 5 以一种摧枯拉朽之势,将
Qt 4 扫出历史舞台。这一切尚未可知。鉴于此,豆子才不将本系列命名为《Qt 5 学习之路》,
而是以第二版称呼。
另外,对于上一版本,豆子还是很内疚的。因为并不是一个完整的介绍,Qt 的很多优秀特性,
比如 XML,比如数据库,比如网络,都没有进行介绍。这主要是因为当时接触 Qt 也并不是很
多,很多特性没有使用过,即便抄书写出来,也会觉得心里没底。现在豆子对 Qt 了解更多,
所以,在这次修订中,豆子将竭尽全力将一些用到的特性介绍一下。
至于本系列的定位,豆子主张将其定位于入门教程。不过,如果可能的话,豆子希望能够在其中
穿插一些有关
Qt 实现的相关内容。这部分内容肯定不会是基础的,比如信号槽的实现等。不
过,对于这一点豆子也不敢肯定,毕竟要接触到实现层面上的东西,总要花费一定时间和精力的。
这次修订,没有了《C++ GUI Programming with Qt 4》这本书作为提纲,一切都将按照自己的
思路来。豆子将尽量跟随这本书的顺序,同时希望能够按照 Qt 5 的思路,按照模块来介绍 Qt。
当然,作为修订版,本次修订的着重点在于 Qt 5,Qt 4 的内容将追随 Qt 5 进行介绍。同前文
一样,本系列也会参考《C++ GUI Programming with Qt 4》一书,不过鉴于本书的某些自认为
不合适的组织(比如以一个过大的项目作为示例),本版更多会直接参考 Qt 文档。很多原理
性内容,可能会直接来源于文档,所以,感兴趣的朋友建议直接翻阅文档,以文档原文为准。

----Qt 学习之路 2----
- 2 -
说了这么多,总之就是,尽量完成一篇相对高质量的教程。如果有任何建议或者意见,欢迎给豆
子留言。
以此,是为序。
2 Qt 简介
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 模拟器。它将大部分 Win32
API 在 Linux 上面模拟了出来,让 Linux 可以通过 wine 运行 Windows 程序。由
此可以看出,API 模拟最大优点是,应用程序无需重新编译,即可运行到特定平台上。
另外一个例子是微软提供的 DirectX,这个开发库将屏蔽掉不同显卡硬件所提供的具
体功能。使用这个库,你无需担心硬件之间的差异,如果有的显卡没有提供该种功能,
SDK 会使用软件的方式加以实现。
(关于举例,可以参考文末一段精彩的讨论。)
3. GUI 模拟:任何平台都提供了图形绘制函数,例如画点、画线、画面等。有些工
具库利用这些基本函数,在不同绘制出自己的组件,这就是 GUI 模拟。GUI 模拟的
工作量无疑是很大的,因为需要使用最基本的绘图函数将所有组件画出来;并且这种
绘制很难保证和原生组件一模一样。但是,这一代价带来的优势是,可以很方便的修
改组件的外观——只要修改组件绘制函数即可。很多跨平台的 GUI 库都是使用的这种
剩余157页未读,继续阅读













安全验证
文档复制为VIP权益,开通VIP直接复制

评论6