第一部分 Qt基础知识 3
第1学时 Qt简介 3
1.1 选择Qt库 3
1.1.1 可移植性 3
1.1.2 易用性 3
1.1.3 运行速度 4
1.2 安装Qt库 4
1.2.1 编译和安装Qt源分发程序 4
1.2.2 安装Qt RPM包 7
1.3 一个简单的程序实例 8
1.4 编译和运行Qt程序 9
1.4.1 在UNIX系统下编译 9
1.4.2 在MS Windows下使用Visual C++编译 10
1.5 使用Qt Reference Document 11
1.6 小结 14
1.7 问题与答案 14
1.8 作业 14
1.8.1 测验 14
1.8.2 练习 15
2.1 理解类 17
第2学时 面向对象程序设计 17
2.2 类继承 23
2.3 Qt如何使用OOP 25
2.3.1 Qt中使用类继承 25
2.3.2 创建对象和访问方法 26
2.4 小结 28
2.5 问题与答案 28
2.6 作业 28
2.6.1 测验 29
2.6.2 练习 29
3.1 创建第一个主部件 31
第3学时 Qt基础 31
3.2 向主部件中添加对象 34
3.2.1 添加按钮 34
3.2.2 添加标签 36
3.2.3 添加退出按钮 37
3.3 小结 39
3.4 问题与答案 39
3.5 作业 39
3.5.1 测验 40
3.5.2 练习 40
4.1 理解信号和槽 41
4.1.1 槽 41
第4学时 槽和信号 41
4.1.2 信号 42
4.2 使用预定义信号和槽 42
4.2.1 例1——QSlider和QLCDNumber 42
4.2.2 例2——QPushButton和QLineEdit 44
4.3 创建和使用用户信号和槽 45
4.3.1 认识元对象编译器 46
4.3.2 定位元对象编译器 46
4.4 创建用户槽 46
4.4.1 声明用户槽 46
4.4.2 定义用户槽 47
4.4.3 编译使用用户槽程序 48
4.4.4 创建用户信号 48
4.5 信号和槽的有趣功能 50
4.5.1 避免不必要的信息 50
4.5.2 信号和信号之间的连接 50
4.5.3 断开槽和信号之间的连接 50
4.5.4 使用connect()函数时省略对象名称 51
4.6 小结 51
4.7 问题与答案 51
4.8.1 测验 52
4.8.2 练习 52
4.8 作业 52
第5学时 深入学习Qt构造块 53
5.1 使用滚动条 53
5.1.1 了解滚动条 53
5.1.2 一个实际的例子 55
5.2 添加菜单 58
5.3 使用QMain Window部件 61
5.3.1 添加菜单、按钮和中心部件 61
5.3.2 添加状态条 64
5.4 小结 65
5.5 问题与答案 65
5.6.2 练习 66
5.6 作业 66
5.6.1 测验 66
第二部分 重要的Qt部件 69
第6学时 认识Qt部件的第1课 69
6.1 使用按钮 69
6.1.1 按钮 69
6.1.2 单选按钮 71
6.1.3 复选按钮 72
6.2 创建标签 74
6.2.1 QLabel 74
6.2.2 QLCDNumber 75
6.3.1 创建简单的网格 77
6.3 表 77
6.3.2 添加文本和点击选择功能 79
6.3.3 增加表头 81
6.4 小结 83
6.5 问题与答案 83
6.6 作业 84
6.6.1 测验 84
6.6.2 练习 84
7.1 选择部件 85
7.1.1 列表框 85
第7学时 认识Qt部件的第2课 85
7.1.2 组合框 86
7.2 部件布局 88
7.2.1 QGroupBox类 88
7.2.2 QButtonGroup类 89
7.2.3 QSplitter类 89
7.2.4 QWidgetStack类 91
7.3 滑动框和微调框 93
7.3.1 QSlider类 93
7.3.2 QSpinBox类 94
7.4 小结 95
7.6.1 测验 96
7.6 作业 96
7.5 问题与答案 96
7.6.2 练习 97
第8学时 认识Qt部件的第3课 99
8.1 文本输入域 99
8.1.1 QLineEdit 99
8.1.2 QMultiLineEdit 100
8.2 理解列表视图 101
8.3 进程条 106
8.6 作业 108
8.6.1 测验 108
8.5 问题与答案 108
8.4 小结 108
8.6.2 练习 109
第9学时 创建简单图形 111
9.1 QPainter类 111
9.1.1 OPainter 111
9.1.2 设置绘图样式 112
9.1.3 QPainter绘图函数 115
9.2 使用颜色 118
9.2.1 管理颜色 118
9.2.2 指定颜色 119
9.3 用Qt打印图形 120
9.5 问题与答案 121
9.4 小结 121
9.6.1 测验 122
9.6.2 练习 122
9.6 作业 122
第10学时 理解Qt对话框 123
10.1 预定义对话框 123
10.1.1 颜色对话框 123
10.1.2 文件对话框 125
10.1.3 字体对话框 126
10.1.4 消息对话框 128
10.1.5 进度对话框 129
10.2.1 用QDialog创建用户对话框 131
10.2 创建用户对话框 131
10.2.2 选项卡对话框 134
10.3 小结 137
10.4 问题与答案 137
10.5 作业 137
10.5.1 测验 137
10.5.2 练习 138
第三部分 深入学习Qt 141
第11学时 使用布局管理器 141
11.1 理解布局管理器 141
11.2 使用布局管理器 142
11.2.1 按行和列安排部件 143
11.2.2 QGridLayout 145
11.3 理解嵌套布局管理器 147
11.4 小结 152
11.5 问题与答案 152
11.6 作业 153
11.6.1 测验 153
11.6.2 练习 153
第12学时 处理文件和目录 155
12.1 使用Qt类读取文件 155
12.2 使用Qt类读取目录 158
12.3 使用Qt类读取文件信息 160
12.4 小结 164
12.5 问题与答案 164
12.6 作业 164
12.6.1 测验 164
12.6.2 练习 165
第13学时 处理文本和理解常规表达式 167
13.1 常规表达式 167
13.1.1 元字符 167
13.1.2 转义序列 168
13.2.1 QDouble Validator类 169
13.2 预定义验证类 169
13.3 创建用户验证类 171
13.2.2 QInt Validator类 171
13.4 小结 174
13.5 问题与答案 174
13.6 作业 175
13.6.1 测验 175
13.6.2 练习 175
第14学时 学习使用容器类 177
14.1 Qt容器类 177
14.2.1 用QStack类创建栈 178
14.2 栈和队列 178
14.2.2 用QQueue类创建队列 180
14.3 散列表 181
14.4 数据缓存 182
14.5 迭代 184
14.6 小结 185
14.7 问题与答案 186
14.8 作业 186
14.8.1 测验 186
14.8.2 练习 186
15.1 动画 187
第15学时 深入理解图形 187
15.2 装载和保存图像 189
15.2.1 Qt图像格式 190
15.2.2 所支持的图像格式 191
15.3 QPainter转换函数 193
15.3.1 图像缩放 193
15.3.2 图像剪切 194
15.3.3 图像旋转 194
15.3.4 图像平移 194
15.3.5 改变视窗 195
15.3.6 设置窗口大小 195
15.6 作业 196
15.4 小结 196
15.5 问题与答案 196
15.6.1 测验 197
15.6.2 练习 197
第16学时 程序间通信 199
16.1 剪贴板 199
16.1.1 将剪贴板用于文本 199
16.1.2 将剪贴板用于位图 201
16.2 实现拖放功能 205
16.5.1 测验 208
16.5 作业 208
16.4 问题与答案 208
16.3 小结 208
16.5.2 练习 209
第四部分 Qt编程技巧 213
第17学时 编写KDE应用程序的第1课 213
17.1 KDE程序设计基础 214
17.1.1 安装KDE 214
17.1.2 编写第一个KDE程序 214
17.1.3 添加按钮、菜单、工具栏和状态栏 215
17.2 使用KDE的HTML功能特点 219
17.4 问题与答案 222
17.3 小结 222
17.5 作业 223
17.5.1 测验 223
17.5.2 练习 223
第18学时 编写KDE应用程序的第2课 225
18.1 KDE核心库 225
18.1.1 用KAccel类创建键盘快捷方式 225
18.1.2 用KPixmap类管理图像 226
18.1.3 用KProcess类启动子进程 226
18.1.4 通过KWM类与Windows Manager交互 227
18.2 KDE用户接口库 228
18.3.1 用KDirDialog类选择目录 229
18.3 KDE文件操作库 229
18.3.2 用KFileDialog类选择文件 230
18.3.3 用KFileInfo类读取文件信息 230
18.3.4 用KFilePreviewDialog预览文件 231
18.4 其余KDE库 232
18.5 小结 232
18.6 问题与答案 232
18.7.1 测验 233
18.7.2 练习 233
18.7 作业 233
第19学时 使用Qt的OpenGL类 235
19.1 建立OpenGL开发环境 235
19.1.1 获取和安装MESA 235
19.1.2 编译Qt的OpenGL扩展 236
19.2 Qt的OpenGL类 236
19.2.1 QGLWidget——OpenGL部件 236
19.2.2 QGLContext——绘制OpenGL图形 237
19.2.3 QGLFormat——设置环境显示格式 238
19.3 编写、编译和运行基于Qt的OpenGL程序 239
19.3.1 阅读代码 239
20.1.1 获得Netscape Plugin SDK 240
19.3.2 编译和运行例子 245
19.6.1 测验 247
19.4 小结 247
19.5 问题与答案 247
19.6 作业 247
19.6.2 练习 248
第20学时 创建Netscape插件 249
20.1 建立插件开发环境 249
20.1.2 编译Qt的Netscape插件扩展 250
20.2 Qt的Netscape插件类 250
20.2.1 QNPlugin:插件核心 250
20.2.2 QNPInstance:浏览器和插件之间的链接 252
20.2.3 QNPWidget:创建插件可视区域 252
20.3.1 研究代码 253
20.2.4 QNPStream:从浏览器接收数据流 253
20.3 创建第一个Netscape插件 253
20.3.2 编译和安装插件 255
20.3.3 测试插件 256
20.4 小结 257
20.5 问题与答案 257
20.6 作业 257
20.6.1 测验 257
20.6.2 练习 258
21.2.1 使用tr()函数 261
21.2 创建翻译文件 261
第21学时 Qt程序国际化 261
21.1 QString的重要性 261
第五部分 改善程序性能 261
21.2.2 使用findtr实用程序提取翻译文本 262
21.2.3 使用msg2qm实用程序创建二进制翻译文件 264
21.2.4 用mergetr合并修改 265
21.3 在程序中实现翻译功能 265
21.4 处理日期和时间值 267
21.4.1 使用QDate类处理日期值 267
21.4.2 使用QTime类处理时间值 269
21.4.3 使用QDateTime类处理日期时间值组合 270
21.5 小结 272
21.6 问题与答案 272
21.7 作业 272
21.7.1 测验 272
21.7.2 练习 273
第22学时 可移植性 275
22.1 编写可移植的Qt应用程序 275
22.1.1 使用Qt类 275
22.1.2 遵守POSIX标准 277
22.1.3 隔离平台相关的调用 277
22.2 不可移植的Qt函数 278
22.3.1 获取和安装tmake 279
22.3 用tmake实用程序构造可移植项目 279
22.3.2 用tmake创建编译文件 280
22.4 用progen产生项目文件 284
22.5 小结 285
22.6 问题与答案 285
22.7 作业 286
22.7.1 测验 286
22.7.2 练习 286
23.1 使用Qt调试功能 287
第23学时 调试技术 287
23.1.1 qDebug()函数 288
23.1.2 qWarning()函数 288
23.1.2 qFatal()函数 289
23.2 理解Qt调试宏 289
23.2.1 ASSERT()宏 289
23.2.2 CHECK_PTR()宏 290
23.3 用gdb调试器调试Qt程序 290
23.3.1 获取和安装gdb 290
23.3.2 使用gdb 291
23.5 小结 293
23.4 命令行选项 293
23.6 问题与答案 294
23.7 作业 294
23.7.1 测验 294
23.7.2 练习 294
第24学时 使用Qt构造程序 295
24.1 QtEz 295
24.1.1 获取和安装QtEz 295
24.1.2 用QtEz创建简单的GUI 296
24.2.1 获取和安装QtArchitect 302
24.2 QtArchitect 302
24.2.2 用QtArchitect创建简单的GUI 303
24.3 EBuilder 305
24.3.1 获取和安装EBuilder 305
24.3.2 用EBuilder创建简单的GUI 306
24.4 小结 308
24.5 问题与答案 308
24.6 作业 309
24.6.1 测验 309
24.6.2 练习 309
附录A 测验题答案 311
附录B 常用Qt类 325