社区
Qt
帖子详情
请问Qt事件处理时怎样知道事件来源
wxw0710440
2014-01-08 09:42:14
比如我在Send类里发送了一个KeyPress事件,然后再Reciver类里接受该KeyPress事件。加入我new出来好几个Send类,怎么样在Reciver类里知道KeyPress来源于我new出来的哪个实例啊?
...全文
402
5
打赏
收藏
请问Qt事件处理时怎样知道事件来源
比如我在Send类里发送了一个KeyPress事件,然后再Reciver类里接受该KeyPress事件。加入我new出来好几个Send类,怎么样在Reciver类里知道KeyPress来源于我new出来的哪个实例啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wxw0710440
2014-01-14
打赏
举报
回复
谢谢您,其实我要发送的不是KeyPress(KeyPress只是我举例说明的),我要发送的是自己定义的事件;鉴于之前不知道问题怎么处理,我统一改成信号和槽的方式了,不用事件了。
JustNavi
2014-01-13
打赏
举报
回复
引用 3 楼 wxw0710440 的回复:
楼上两位,你好。能不能解释的详细点。谢谢!
QObject::sender()用于槽中识别信号来源,与你的要求不符合。 至于你的问题“Qt事件处理时怎样知道事件来源”我还真不知道。我的理解是: Qt中预定义的事件更关心谁去处理它以及携带的相关事件信息,而不关心谁产生了它。倒是可以在自己预定义的事件中加上发送者的信息,但是LZ要发送的却是KeyPress事件这些Qt预定义的事件。
wxw0710440
2014-01-09
打赏
举报
回复
楼上两位,你好。能不能解释的详细点。谢谢!
JustNavi
2014-01-08
打赏
举报
回复
引用 1 楼 dext 的回复:
QObject::sender()
这是用于多个信号连接到单个槽吧。话说LZ说的是多个KeyPress事件发送到同一个对象?没看懂。
dext
2014-01-08
打赏
举报
回复
QObject::sender()
Qt
学习笔记之
事件
处理
1.
Qt
事件
概述
事件
是对各种应用程序需要
知道
的由应用程序内部或者外部产生的事情或者动作的通称。对于初学者,总会对
Qt
中信号和
事件
的概念混淆不清。其实,记住
事件
比信号更底层就可以了。比如说,我们用鼠标按下界面上的一个按钮,它会发射clicked()单击信号,但是,它怎么
知道
自己被按下的呢,那就是通过鼠标
事件
处理
的。这里可以看到,鼠标
事件
比信号更底层。 在
Qt
中处理
事件
有多种方法,不过最常用的是重写
Qt
事件
处理
函数。 2.
Qt
事件
的
来源
3.
Qt
事件
机制
Qt
中定义的
事件
是一个从QEvent类继承而来的对象,它表示应用程序内部或外部发生了某些应用程序自身必须
知道
的事情。任何从QObjec
vs+
qt
+OpenMesh实现对三维网格模型光滑化处理
刚刚上传了本项目的发布软件,现在上传源代码。 该软件利用vs2013+
qt
5.5.1+
qt
-addin1.2.5+OpenMesh6.3开发,实现对Obj、Off等三维模型网格格式文件的读取、数据操作(光滑化处理)、写入等功能。 其中,关于OpenMesh部分,利用了节点动态自定义属性,存储每个节点单环领域节点重心数据。源代码实现思路主要
来源
于OpenMesh Documents 中的例子,共享以便供码友们参考。
QT
/C++从新手到老手系列之
QT
基础篇
本系列课程励志于带领你学习
QT
5/C++,从开发环境(
QT
Creator和VS2013两种)搭建到实际项目实战,从入门到精通。每一个部分均有理论知识介绍、接口讲解、实例代码讲解,讲解过程中不断穿插老师在开发过程中遇到的问题及解决方法。本阶段主要学习
Qt
开发环境搭建(
QT
Creator及VS)、程序的发布、GUI控件的属性、方法、布局管理、容器类、
QT
事件
处理
等,学完本阶段后可以开发小型的应用程序。
精通
qt
4编程(源代码)
初 级 篇 \第1章
Qt
初步实践 2 \1.1 第一个
Qt
程序 2 \1.1.1 建立主程序 2 \1.1.2 建立工程 3 \1.1.3 编译/运行第一个
Qt
应用程序 8 \1.1.4 第一个
Qt
程序的代码分析 8 \1.2 使用
Qt
布局管理器 11 \1.3 关联操作 12 \1.4 小结 13 \第2章 对话框——QDialog 14 \2.1 自定义对话框 14 \2.1.1 建立新类 14 \2.1.2 添加子窗口部件 15 \2.2 加入主程序 22 \2.3
Qt
内建(built-in)对话框 24 \2.4 小结 34 \第3章 基础窗口部件——QWidget 35 \3.1
Qt
设计器绘制窗口部件 35 \3.1.1
Qt
设计器基础 35 \3.1.2 绘制窗口部件 40 \3.2 程序中引入自定义窗口部件 47 \3.2.1 直接使用方式 47 \3.2.2 单一继承方式 49 \3.2.3 多继承方式 51 \3.3
Qt
的信号和槽机制 53 \3.3.1 基本原理 53 \3.3.2 设计信号和槽 55 \3.3.3 信号和槽的自动关联 62 \3.4 窗口标志及几何布局 63 \3.4.1窗口标志 64 \3.4.2窗口部件的几何布局 66 \ \3.5
Qt
样式表 74 \3.5.1 样式表语法 74 \3.5.2 样式表的应用 76 \3.6
Qt
对象模型 79 \3.6.1 元对象系统 79 \3.6.2 属性系统 80 \3.6.3 对象树 83 \3.7 小结 86 \第4章 程序主窗口——QMainWindow 87 \4.1 QMainWindow主窗口框架 87 \4.2
Qt
设计器绘制主窗口 88 \4.2.1 菜单 90 \4.2.2 工具栏 93 \4.2.3 中心部件 96 \4.3 代码创建主窗口 98 \4.3.1 创建资源文件 98 \4.3.2 定义主窗口类 98 \4.4 锚接部件 102 \4.5 状态栏 105 \4.6 实现文本编辑器功能 107 \4.7 多文档 118 \4.8 打印文档 119 \4.9 小结 120 \第5章 布局管理 121 \5.1
Qt
布局管理器——QLayout 121 \5.1.1
Qt
布局管理器简介 121 \5.1.2 布局管理器及窗口部件大小策略 \5.1.2 的应用 125 \5.2 分裂器部件QSplitter 132 \5.3 栈部件QStackedWidget 134 \5.4 工作空间部件QWorkspace 135 \5.5 多文档区部件QMdiArea 148 \5.6 小结 150 \ \中 级 篇 \第6章 2D绘图 152 \6.1 Arthur绘图基础 152 \6.1.1 绘图 152 \6.1.2 绘图设备 174 \6.2 坐标系统与坐标变换 175 \6.2.1 坐标系统 175 \6.2.2 坐标变换 175 \6.3 用不同的字体 177 \6.4 绘图路径——QPainterPath 180 \6.5 QImage与QPixmap绘图设备 182 \6.5.1 QImage 182 \6.5.2 Pixmap 183 \6.6 组合模式绘图 192 \6.7 Graphics View框架 200 \6.7.1 Graphics View体系结构 200 \6.7.2 Graphics View坐标系统 201 \6.7.3 深入Graphics View 202 \6.8 图形图像打印 208 \6.8.1 普通打印过程 208 \6.8.2 特殊窗口部件的打印 210 \6.9 小结 211 \第7章 拖放操作和剪贴板 212 \7.1 拖放操作 212 \7.1.1 拖放操作 212 \7.1.2 定义新的拖放操作类型 214 \7.1.3 Graphics View框架下的拖放 \7.1.3 操作 215 \7.2 使用剪贴板 217 \7.3 小结 218 \第8章 文件处理 219 \8.1 读写文本文件 219 \8.2 操作二进制文件 220 \8.3 临
时
文件 222 \8.4 目录操作和文件管理 222 \8.4.1 目录操作 222 \8.4.2 文件管理 224 \8.5 监视文件系统变化 225 \8.6 文件引擎 226 \8.7 小结 226 \第9章 网络 227 \9.1 FTP客户端 227 \9.2 HTTP客户端 235 \9.3 UDP应用 239 \9.4 TCP应用 243 \9.5 高级应用 253 \9.5.1 底层操作 253 \9.5.2 使用代理 256 \9.5.3 扩展
Qt
网络功能 256 \9.5.4 效率问题 260 \9.6 小结 260 \第10章 多线程 261 \10.1 启动一个线程 261 \10.2 线程互斥与同步 264 \10.2.1 临界区问题 265 \10.2.2 使用QMutex 265 \10.2.3 使用QSemaphore 266 \10.2.4 使用QWaitConditon 269 \10.3 线程的其他问题 271 \10.3.1 优先级问题 271 \10.3.2 死锁及优先级反转问题 274 \10.3.3 本地存储问题 275 \10.4
Qt
的线程机制 276 \10.4.1 可重入与线程安全 276 \10.4.2 线程与
事件
循环 277 \10.4.3 线程与信号/槽机制 278 \10.4.4 多线程网络示例 279 \10.5 小结 282 \第11章
事件
处理
283 \11.1
事件
机制 283 \11.1.1
事件
来源
与类型 283 \11.1.2
事件
处理
方法 284 \11.2
事件
处理
器 285 \11.3
事件
过滤器 290 \11.4 加快用户界面响应 292 \11.4.1 使用processEvents()函数 293 \11.4.2 使用定
时
器 294 \11.5 小结 296 \第12章 数据库 297 \12.1 连接数据库 297 \12.2 常用数据库操作 301 \12.2.1 使用SQL语句 302 \12.2.2 事务操作 304 \12.2.3 使用SQL模型类 304 \12.2.4 数据表示 308 \12.3
Qt
数据库应用 310 \12.3.1 使用嵌入式数据库 310 \12.3.2 使用Oracle数据库 313 \12.4 小结 325 \第13章
Qt
的模板库和工具类 326 \13.1
Qt
容器类 326 \13.1.1 QList、QLinkedList和QVector 327 \13.1.2 QMap、QHash 332 \13.2 QString 334 \13.2.1 隐式共享 335 \13.2.2 内存分配策略 336 \13.2.3 操作字符串 336 \13.2.4 查询字符串数据 337 \13.2.5 字符串的转换 338 \13.3 QVariant 339 \13.4
Qt
的算法 341 \13.5 正则表达式 342 \13.5.1 基本的正则表达式 342 \13.5.2 文字捕获 344 \13.6 小结 345 \高 级 篇 \第14章 XML 348 \14.1 DOM 348 \14.1.1 DOM入门 348 \14.1.2 使用DOM 348 \14.1.3 使用DOM写XML文件 352 \14.2 SAX 354 \14.3 基于流的XML API 359 \14.4 小结 365 \第15章 模型/视图结构 366 \15.1 模型/视图结构与MVC设计 \15.1 模式 366 \15.1.1 模型 366 \15.1.2 视图 367 \15.1.3 代理 368 \15.2 使用已有的模型视图类 368 \15.2.1 使用已有的模型和视图类 368 \15.2.2 QListWidget、
Qt
reeWidget \15.2.2 和
QT
ableWidget 370 \15.3 模型(Models) 381 \15.3.1 模型索引 381 \15.3.2 模型角色 382 \15.3.3 自定义模型 382 \15.3.4 代理模型 385 \15.4 视图(Views) 390 \15.4.1 自定义视图 390 \15.4.2 数据-窗口部件映射 390 \15.5 代理(Delegates) 396 \15.5.1 使用已有的代理 396 \15.5.2 自定义代理 396 \15.6 拖放与选中 401 \15.6.1 拖放操作 401 \15.6.2 选中模式 404 \15.7 小结 405 \第16章 高级绘图 406 \16.1 3D绘图——使用OpenGL 406 \16.1.1 创建OpenGL窗口 406 \16.1.2 着色 410 \16.1.3 3D和旋转 411 \16.1.4 纹理贴图 414 \16.2 SVG 417 \16.2.1 绘制SVG图形 418 \16.2.2 生成SVG文件 419 \16.3 小结 420 \第17章 进程与进程间通信 421 \17.1 使用QProcess 421 \17.2 Linux进程间通信 423 \17.3 新型进程间通信——D-Bus 425 \17.3.1 D-Bus简介 425 \17.3.2 安装
Qt
DBus模块 427 \17.3.3 接口与适配器 429 \17.3.4
Qt
DBus应用实例 432 \17.4 小结 441 \第18章
Qt
插件 442 \18.1
Qt
插件开发基础 442 \18.2
Qt
设计器插件 443 \18.2.1 使用Scratchpad 443 \18.2.2 提升自定义窗口部件 444 \18.2.3
Qt
设计器插件开发 444 \18.3 编写数据库插件 451 \18.4 自定义风格插件 455 \18.5 小结 458 \第19章 脚本——
Qt
Script 459 \19.1 执行ECMAScript脚本 459 \19.2
Qt
Script中的信号和槽 460 \19.3 使用JavaScript操作
Qt
对象 463 \19.4 基于Prototype的继承 467 \19.5 小结 467 \第20章 国际化 468 \20.1 Unicode与字符编码 468 \20.1.1 Unicode 468 \20.1.2 汉字编码 469 \20.1.3 编码转换 469 \20.2
Qt
Linguist 471 \20.2.1 发布管理器 472 \20.2.2 翻译器 474 \20.2.3 加载翻译文件 476 \20.3 语言切换 477 \20.4 小结 477 \第21章
Qt
单元测试框架 478 \21.1
QT
estLib框架 478 \21.1.1
QT
estLib 478 \21.1.2 第一个
Qt
单元测试 478 \21.2 数据驱动测试 480 \21.3 GUI测试 481 \21.2.1 仿真GUI
事件
481 \21.2.2 重放GUI
事件
483 \21.3 小结 484 \附录A
Qt
安装 485 \附录B
Qt
集成开发环境 492 \附录C qmake速查 501 \附录D 深入
Qt
源代码 506 \附录E
Qt
资源 512 序言/前言 前言 \两年前,当我们准备在Linux系统下开发GUI应用软件
时
,首先想到的就是选择一个GUI应用框架来简化开发。在三大GUI框架GTK+、
Qt
和wxWidgets 之间,我们选择了
Qt
4工具包。作为重量级桌面系统KDE多年的坚实基础,
Qt
应该是经受了足够的考验。当我们准备编写自己的应用软件
时
,却发现图书市场上没有一本关于
Qt
4的书籍,仅有的只是一些关于
Qt
3的资料。由于
Qt
3到
Qt
4的变化很大,甚至源代码都不兼容,所以这些资料的参考价值并不是太大。于是,我们通过阅读
Qt
的assistant和examples来学习并使用
Qt
4。在逐渐掌握
Qt
4的过程中,我们萌发了编写一本关于
Qt
4的书来帮助初学者入门的想法。最终,在电子工业出版社博文视点资讯有限公司的大力支持下,我们的想法终于得以付诸实施。 \关于
Qt
\
Qt
是挪威的Trolltech公司的旗舰产品,作为跨平台的应用程序框架,是开源的桌面系统KDE的基石。Google Earth,Skype,Opera,Adobe Photoshop Elements,Peforce Visual Client等软件都是基于
Qt
写成。自Trolltech公司1996年推出
Qt
1.0版以来,
Qt
已经从2.x,3.x发展到了现在的
Qt
4.3,本书就是基于最新的
Qt
4.3写成。因为
Qt
4框架设计得非常优秀,在2006年的第16届Jolt大奖上,
Qt
4获得了类库、框架和组件类别的Jolt生产力奖。 \和Java的“一次编译,到处运行”跨平台不同的是,
Qt
是源代码级的跨平台,一次编写,随处编译。一次开发的
Qt
应用程序可以移植到不同的平台上,只需重新编译即可运行。
Qt
支持的平台有: \? Microsoft Windows,包括Windows 98/NT 4.0/2000/XP/Vista; \? UNIX/X11,包括Linux,Sun Solaris,HP-UX,HP Tru64 UNIX,IBM AIX,SGI IRIX等; \? Mac OS X,支持Mac OS X 10.3以上版本; \? 嵌入式Linux,包括支持framebuffer的所有Linux平台。 \
Qt
还支持嵌入式系统,
Qt
的嵌入式版本称为
Qt
opia Core,可以在多种处理器上运行,目标操作系统通常是嵌入式Linux。
Qt
opia Core应用程序直接使用framebuffer,而不是笨重的X Window系统。
Qt
相关的另一个产品——
Qt
Jambi,则是基于
Qt
库构建的,面向Java程序员的应用程序框架。另外,还有一些开源的在其他语言上的
Qt
绑定,如C#/Mono的绑定Qyoto,Python的绑定Py
Qt
,Ruby的绑定
Qt
Ruby等。有了这些产品,编写
Qt
程序不再是C++程序员的专利了。 \
Qt
的发行版本有商业版和开源版。开源版遵循QPL(Q Public License)和GPL(GNU General Public License)协议,商业版则提供了一些特有的模块,如Windows平台上的Active
Qt
框架,Oralce、DB2等商业数据库的驱动。本书主要介绍开源版的
Qt
4.3。 \阅读本书的基础 \阅读本书的读者需要具有基本的C++程序设计知识,毕竟
Qt
是用C++编写的应用程序框架。如果要学习
Qt
Script,还需要了解JavaScript。 \本书的结构 \本书共21章,每章讨论一个专题。章节安排上基本采用循序渐进、由浅到深的原则。但最后的高级篇中的章节没有很强的关联,可以按照随意的顺序阅读。每章内容及作者分述如下: \篇章 章 名 作者 内 容 简 介 页码 \初级篇 第1章
Qt
初步实践 卢传富 建立了第一个较简单的
Qt
应用程序,在GUI用户界面中显示一行中文。 2 \ 第2章 对话框 \——QDialog 卢传富介绍了
Qt
的对话框类QDialog,实现了一个自定义的登录对话框,举例说明了
Qt
提供的内建对话框类的应用。 14 \ 第3章 基础窗口部件——QWidget 卢传富 \蔡志明首次引入
Qt
设计器的使用,绘制并实现了一个查找文件功能的部件,介绍了
Qt
应用程序中使用ui文件的基本方法以及
Qt
样式表;较深入地分析了
Qt
对象模型的一些基本知识,涉及信号和槽机制、
Qt
元对象系统、属性系统和对象树机制,以及部件类型和部件的几何布局等内容。 35 \ 第4章 程序主窗口—— QMainWindow 卢传富
Qt
应用程序的主窗口是由多个部件/组件构成的框架,本章通过一个简单文本编辑器的例子,介绍了主窗口的菜单、工具条、中心部件、锚接部件和状态条,并通过
Qt
设计器绘制和手写代码两种方法实现了简单文本编辑器主窗口界面的排布和管理。 87 \ 第5章 布局管理 卢传富布局管理是GUI应用程序编程的一个重要方面。
Qt
提供了多种布局管理部件,包括
Qt
布局管理器、分裂器、栈部件、工作空间部件和多文档区部件等。本章一一介绍了这些部件,并举例说明了它们在图形用户界面编程中的应用。 121 \中级篇 第6章 2D绘图 蔡志明本章内容较多,包括
Qt
的绘图要素、图形变换与坐标系统、绘图设备、图像处理、图像打印等。最后讲解了
Qt
4图形系统的模型视图框架——Graphics View框架。 152 \ 第7章 拖放操作与剪贴板 蔡志明 本章简要地说明了基于MIME的拖放操作和剪贴板的使用,关于Graphics View框架的拖放操作也在本章。 212 \ 第8章 文件处理 蔡志明介绍了
Qt
的文件处理,包括基于流的文本文件和二进制文件处理,文件信息和目录操作,目录以及文件的变化监控,文件引擎的编写。 219 \ 第9章 网络 李立夏介绍了
Qt
的网络处理,包括编写常见的FTP、HTTP、UDP和TCP程序,以及访问底层网络接口信息和扩展
Qt
网络模块功能的方法。 227 \ 第10章 多线程 李立夏介绍了
Qt
的多线程处理,包括两方面内容:传统的线程操作,以及与
Qt
事件
机制相关的操作。这一章还涉及较多的基本概念,并逐一做了介绍。 261 \ 第11章
事件
机制 李立夏介绍了
Qt
的
事件
处理
模型,详细介绍了在
Qt
程序设计中处理
事件
的五种方法,并讨论了如何利用
Qt
事件
机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了
Qt
的数据库处理,重点介绍了如何在
Qt
中使用SQL语句进行数据库操作和如何利用QSqlTableModel这类高层次类进行常见的数据库编程。 297 \ 第13章
Qt
的模板库和工具类 卢传富 \蔡志明
Qt
提供了丰富的模板库和工具类,本章只是介绍了部分内容。在这一章,重点介绍了
Qt
的容器类、QString和QVariant类,简介了
Qt
的算法和
Qt
正则表达式的使用。 326 \ \ \续表 \篇章 章 名 作者 内 容 简 介 页码 \高级篇 第14章 XML 蔡志明对
Qt
中的三种XML解析方式(DOM、SAX和基于流的解析)进行了比较和举例。还讲解了如何使用API写XML文件。 348 \ 第15章 模型/视图结构 蔡志明阐述了
Qt
的模型/视图结构,分别对模型视图的三个组成部分(模型、视图和代理)进行了介绍,演示了如何自定义这些组成部分,并简要说明了拖放以及选中操作。 366 \ 第16章 高级绘图 蔡志明叙述了在
Qt
中如何使用OpenGL绘图,对基本的OpenGL绘图进行了讲解,介绍了矢量图型文件SVG的读写操作。 406 \ 第17章 进程间通信 李立夏 介绍进程和进程间通信的知识,重点介绍了
Qt
中桌面环境下基于D-Bus的多进程应用程序开发。 421 \ 第18章
Qt
插件 蔡志明 说明了
Qt
的插件系统,并对
Qt
Designer插件、数据库插件、风格插件进行了较详细的介绍。 442 \ 第19章 脚本——
Qt
Script 蔡志明 这是
Qt
4.3中引入的最新内容,使得
Qt
能够支持ECMAScript脚本。本章简要地举例说明了在
Qt
中如何使用脚本,如何将C++对象暴露给脚本。 459 \ 第20章 国际化 骆艳 本章包括编码的处理,
Qt
Linguist的使用步骤,动态语言切换的内容。 468 \ 第21章
Qt
单元测试框架 蔡志明 本章阐述了如何使用
QT
estLib框架进行数据测试、GUI测试。 478 \ 附录A~E 蔡志明附录中包括
Qt
在Linux、Windows、Solaris上的安装,KDevelop、Eclipse集成开发环境的使用,qmake的基本应用,
Qt
源代码分析举例,
Qt
资源。 485 \如何获取源代码 \由于
Qt
是跨平台的,因此书中的内容应用能够在Windows、Linux、UNIX和Mac OS上运行,书中的程序可能是在下列三种平台之一上编写:Windows XP/Vista、Linux(SuSE、Fedora Core或红旗)以及Solaris 10 SPARC/X86。因此书中的屏幕截图可能
来源
于其中的任何一种操作系统。 \要获取本书的源代码,可以访问博文视点资讯有限公司网站获取: \ www.broadview.com.cn。 \致谢 \本书在写作出版的过程中,得到了电子工业出版社孙学瑛编辑的大力帮助,没有她细致的工作和有益的建议,本书难以最终出版,在此,作者向孙学瑛编辑表示诚挚的谢意。 \问题反馈 \欢迎广大读者和专家对本书提出建议和批评。如果您认为书有错误或对我们有什么建议,可以联系jsj@phei.com.cn。 \ \蔡志明 卢传富 李立夏 \2007年11月30日于武汉
精通
Qt
4编程(第二版)源代码
初 级 篇 \第1章
Qt
初步实践 2 \1.1 第一个
Qt
程序 2 \1.1.1 建立主程序 2 \1.1.2 建立工程 3 \1.1.3 编译/运行第一个
Qt
应用程序 8 \1.1.4 第一个
Qt
程序的代码分析 8 \1.2 使用
Qt
布局管理器 11 \1.3 关联操作 12 \1.4 小结 13 \第2章 对话框——QDialog 14 \2.1 自定义对话框 14 \2.1.1 建立新类 14 \2.1.2 添加子窗口部件 15 \2.2 加入主程序 22 \2.3
Qt
内建(built-in)对话框 24 \2.4 小结 34 \第3章 基础窗口部件——QWidget 35 \3.1
Qt
设计器绘制窗口部件 35 \3.1.1
Qt
设计器基础 35 \3.1.2 绘制窗口部件 40 \3.2 程序中引入自定义窗口部件 47 \3.2.1 直接使用方式 47 \3.2.2 单一继承方式 49 \3.2.3 多继承方式 51 \3.3
Qt
的信号和槽机制 53 \3.3.1 基本原理 53 \3.3.2 设计信号和槽 55 \3.3.3 信号和槽的自动关联 62 \3.4 窗口标志及几何布局 63 \3.4.1窗口标志 64 \3.4.2窗口部件的几何布局 66 \ \3.5
Qt
样式表 74 \3.5.1 样式表语法 74 \3.5.2 样式表的应用 76 \3.6
Qt
对象模型 79 \3.6.1 元对象系统 79 \3.6.2 属性系统 80 \3.6.3 对象树 83 \3.7 小结 86 \第4章 程序主窗口——QMainWindow 87 \4.1 QMainWindow主窗口框架 87 \4.2
Qt
设计器绘制主窗口 88 \4.2.1 菜单 90 \4.2.2 工具栏 93 \4.2.3 中心部件 96 \4.3 代码创建主窗口 98 \4.3.1 创建资源文件 98 \4.3.2 定义主窗口类 98 \4.4 锚接部件 102 \4.5 状态栏 105 \4.6 实现文本编辑器功能 107 \4.7 多文档 118 \4.8 打印文档 119 \4.9 小结 120 \第5章 布局管理 121 \5.1
Qt
布局管理器——QLayout 121 \5.1.1
Qt
布局管理器简介 121 \5.1.2 布局管理器及窗口部件大小策略 \5.1.2 的应用 125 \5.2 分裂器部件QSplitter 132 \5.3 栈部件QStackedWidget 134 \5.4 工作空间部件QWorkspace 135 \5.5 多文档区部件QMdiArea 148 \5.6 小结 150 \ \中 级 篇 \第6章 2D绘图 152 \6.1 Arthur绘图基础 152 \6.1.1 绘图 152 \6.1.2 绘图设备 174 \6.2 坐标系统与坐标变换 175 \6.2.1 坐标系统 175 \6.2.2 坐标变换 175 \6.3 用不同的字体 177 \6.4 绘图路径——QPainterPath 180 \6.5 QImage与QPixmap绘图设备 182 \6.5.1 QImage 182 \6.5.2 Pixmap 183 \6.6 组合模式绘图 192 \6.7 Graphics View框架 200 \6.7.1 Graphics View体系结构 200 \6.7.2 Graphics View坐标系统 201 \6.7.3 深入Graphics View 202 \6.8 图形图像打印 208 \6.8.1 普通打印过程 208 \6.8.2 特殊窗口部件的打印 210 \6.9 小结 211 \第7章 拖放操作和剪贴板 212 \7.1 拖放操作 212 \7.1.1 拖放操作 212 \7.1.2 定义新的拖放操作类型 214 \7.1.3 Graphics View框架下的拖放 \7.1.3 操作 215 \7.2 使用剪贴板 217 \7.3 小结 218 \第8章 文件处理 219 \8.1 读写文本文件 219 \8.2 操作二进制文件 220 \8.3 临
时
文件 222 \8.4 目录操作和文件管理 222 \8.4.1 目录操作 222 \8.4.2 文件管理 224 \8.5 监视文件系统变化 225 \8.6 文件引擎 226 \8.7 小结 226 \第9章 网络 227 \9.1 FTP客户端 227 \9.2 HTTP客户端 235 \9.3 UDP应用 239 \9.4 TCP应用 243 \9.5 高级应用 253 \9.5.1 底层操作 253 \9.5.2 使用代理 256 \9.5.3 扩展
Qt
网络功能 256 \9.5.4 效率问题 260 \9.6 小结 260 \第10章 多线程 261 \10.1 启动一个线程 261 \10.2 线程互斥与同步 264 \10.2.1 临界区问题 265 \10.2.2 使用QMutex 265 \10.2.3 使用QSemaphore 266 \10.2.4 使用QWaitConditon 269 \10.3 线程的其他问题 271 \10.3.1 优先级问题 271 \10.3.2 死锁及优先级反转问题 274 \10.3.3 本地存储问题 275 \10.4
Qt
的线程机制 276 \10.4.1 可重入与线程安全 276 \10.4.2 线程与
事件
循环 277 \10.4.3 线程与信号/槽机制 278 \10.4.4 多线程网络示例 279 \10.5 小结 282 \第11章
事件
处理
283 \11.1
事件
机制 283 \11.1.1
事件
来源
与类型 283 \11.1.2
事件
处理
方法 284 \11.2
事件
处理
器 285 \11.3
事件
过滤器 290 \11.4 加快用户界面响应 292 \11.4.1 使用processEvents()函数 293 \11.4.2 使用定
时
器 294 \11.5 小结 296 \第12章 数据库 297 \12.1 连接数据库 297 \12.2 常用数据库操作 301 \12.2.1 使用SQL语句 302 \12.2.2 事务操作 304 \12.2.3 使用SQL模型类 304 \12.2.4 数据表示 308 \12.3
Qt
数据库应用 310 \12.3.1 使用嵌入式数据库 310 \12.3.2 使用Oracle数据库 313 \12.4 小结 325 \第13章
Qt
的模板库和工具类 326 \13.1
Qt
容器类 326 \13.1.1 QList、QLinkedList和QVector 327 \13.1.2 QMap、QHash 332 \13.2 QString 334 \13.2.1 隐式共享 335 \13.2.2 内存分配策略 336 \13.2.3 操作字符串 336 \13.2.4 查询字符串数据 337 \13.2.5 字符串的转换 338 \13.3 QVariant 339 \13.4
Qt
的算法 341 \13.5 正则表达式 342 \13.5.1 基本的正则表达式 342 \13.5.2 文字捕获 344 \13.6 小结 345 \高 级 篇 \第14章 XML 348 \14.1 DOM 348 \14.1.1 DOM入门 348 \14.1.2 使用DOM 348 \14.1.3 使用DOM写XML文件 352 \14.2 SAX 354 \14.3 基于流的XML API 359 \14.4 小结 365 \第15章 模型/视图结构 366 \15.1 模型/视图结构与MVC设计 \15.1 模式 366 \15.1.1 模型 366 \15.1.2 视图 367 \15.1.3 代理 368 \15.2 使用已有的模型视图类 368 \15.2.1 使用已有的模型和视图类 368 \15.2.2 QListWidget、
Qt
reeWidget \15.2.2 和
QT
ableWidget 370 \15.3 模型(Models) 381 \15.3.1 模型索引 381 \15.3.2 模型角色 382 \15.3.3 自定义模型 382 \15.3.4 代理模型 385 \15.4 视图(Views) 390 \15.4.1 自定义视图 390 \15.4.2 数据-窗口部件映射 390 \15.5 代理(Delegates) 396 \15.5.1 使用已有的代理 396 \15.5.2 自定义代理 396 \15.6 拖放与选中 401 \15.6.1 拖放操作 401 \15.6.2 选中模式 404 \15.7 小结 405 \第16章 高级绘图 406 \16.1 3D绘图——使用OpenGL 406 \16.1.1 创建OpenGL窗口 406 \16.1.2 着色 410 \16.1.3 3D和旋转 411 \16.1.4 纹理贴图 414 \16.2 SVG 417 \16.2.1 绘制SVG图形 418 \16.2.2 生成SVG文件 419 \16.3 小结 420 \第17章 进程与进程间通信 421 \17.1 使用QProcess 421 \17.2 Linux进程间通信 423 \17.3 新型进程间通信——D-Bus 425 \17.3.1 D-Bus简介 425 \17.3.2 安装
Qt
DBus模块 427 \17.3.3 接口与适配器 429 \17.3.4
Qt
DBus应用实例 432 \17.4 小结 441 \第18章
Qt
插件 442 \18.1
Qt
插件开发基础 442 \18.2
Qt
设计器插件 443 \18.2.1 使用Scratchpad 443 \18.2.2 提升自定义窗口部件 444 \18.2.3
Qt
设计器插件开发 444 \18.3 编写数据库插件 451 \18.4 自定义风格插件 455 \18.5 小结 458 \第19章 脚本——
Qt
Script 459 \19.1 执行ECMAScript脚本 459 \19.2
Qt
Script中的信号和槽 460 \19.3 使用JavaScript操作
Qt
对象 463 \19.4 基于Prototype的继承 467 \19.5 小结 467 \第20章 国际化 468 \20.1 Unicode与字符编码 468 \20.1.1 Unicode 468 \20.1.2 汉字编码 469 \20.1.3 编码转换 469 \20.2
Qt
Linguist 471 \20.2.1 发布管理器 472 \20.2.2 翻译器 474 \20.2.3 加载翻译文件 476 \20.3 语言切换 477 \20.4 小结 477 \第21章
Qt
单元测试框架 478 \21.1
QT
estLib框架 478 \21.1.1
QT
estLib 478 \21.1.2 第一个
Qt
单元测试 478 \21.2 数据驱动测试 480 \21.3 GUI测试 481 \21.2.1 仿真GUI
事件
481 \21.2.2 重放GUI
事件
483 \21.3 小结 484 \附录A
Qt
安装 485 \附录B
Qt
集成开发环境 492 \附录C qmake速查 501 \附录D 深入
Qt
源代码 506 \附录E
Qt
资源 512 序言/前言 前言 \两年前,当我们准备在Linux系统下开发GUI应用软件
时
,首先想到的就是选择一个GUI应用框架来简化开发。在三大GUI框架GTK+、
Qt
和wxWidgets 之间,我们选择了
Qt
4工具包。作为重量级桌面系统KDE多年的坚实基础,
Qt
应该是经受了足够的考验。当我们准备编写自己的应用软件
时
,却发现图书市场上没有一本关于
Qt
4的书籍,仅有的只是一些关于
Qt
3的资料。由于
Qt
3到
Qt
4的变化很大,甚至源代码都不兼容,所以这些资料的参考价值并不是太大。于是,我们通过阅读
Qt
的assistant和examples来学习并使用
Qt
4。在逐渐掌握
Qt
4的过程中,我们萌发了编写一本关于
Qt
4的书来帮助初学者入门的想法。最终,在电子工业出版社博文视点资讯有限公司的大力支持下,我们的想法终于得以付诸实施。 \关于
Qt
\
Qt
是挪威的Trolltech公司的旗舰产品,作为跨平台的应用程序框架,是开源的桌面系统KDE的基石。Google Earth,Skype,Opera,Adobe Photoshop Elements,Peforce Visual Client等软件都是基于
Qt
写成。自Trolltech公司1996年推出
Qt
1.0版以来,
Qt
已经从2.x,3.x发展到了现在的
Qt
4.3,本书就是基于最新的
Qt
4.3写成。因为
Qt
4框架设计得非常优秀,在2006年的第16届Jolt大奖上,
Qt
4获得了类库、框架和组件类别的Jolt生产力奖。 \和Java的“一次编译,到处运行”跨平台不同的是,
Qt
是源代码级的跨平台,一次编写,随处编译。一次开发的
Qt
应用程序可以移植到不同的平台上,只需重新编译即可运行。
Qt
支持的平台有: \? Microsoft Windows,包括Windows 98/NT 4.0/2000/XP/Vista; \? UNIX/X11,包括Linux,Sun Solaris,HP-UX,HP Tru64 UNIX,IBM AIX,SGI IRIX等; \? Mac OS X,支持Mac OS X 10.3以上版本; \? 嵌入式Linux,包括支持framebuffer的所有Linux平台。 \
Qt
还支持嵌入式系统,
Qt
的嵌入式版本称为
Qt
opia Core,可以在多种处理器上运行,目标操作系统通常是嵌入式Linux。
Qt
opia Core应用程序直接使用framebuffer,而不是笨重的X Window系统。
Qt
相关的另一个产品——
Qt
Jambi,则是基于
Qt
库构建的,面向Java程序员的应用程序框架。另外,还有一些开源的在其他语言上的
Qt
绑定,如C#/Mono的绑定Qyoto,Python的绑定Py
Qt
,Ruby的绑定
Qt
Ruby等。有了这些产品,编写
Qt
程序不再是C++程序员的专利了。 \
Qt
的发行版本有商业版和开源版。开源版遵循QPL(Q Public License)和GPL(GNU General Public License)协议,商业版则提供了一些特有的模块,如Windows平台上的Active
Qt
框架,Oralce、DB2等商业数据库的驱动。本书主要介绍开源版的
Qt
4.3。 \阅读本书的基础 \阅读本书的读者需要具有基本的C++程序设计知识,毕竟
Qt
是用C++编写的应用程序框架。如果要学习
Qt
Script,还需要了解JavaScript。 \本书的结构 \本书共21章,每章讨论一个专题。章节安排上基本采用循序渐进、由浅到深的原则。但最后的高级篇中的章节没有很强的关联,可以按照随意的顺序阅读。每章内容及作者分述如下: \篇章 章 名 作者 内 容 简 介 页码 \初级篇 第1章
Qt
初步实践 卢传富 建立了第一个较简单的
Qt
应用程序,在GUI用户界面中显示一行中文。 2 \ 第2章 对话框 \——QDialog 卢传富介绍了
Qt
的对话框类QDialog,实现了一个自定义的登录对话框,举例说明了
Qt
提供的内建对话框类的应用。 14 \ 第3章 基础窗口部件——QWidget 卢传富 \蔡志明首次引入
Qt
设计器的使用,绘制并实现了一个查找文件功能的部件,介绍了
Qt
应用程序中使用ui文件的基本方法以及
Qt
样式表;较深入地分析了
Qt
对象模型的一些基本知识,涉及信号和槽机制、
Qt
元对象系统、属性系统和对象树机制,以及部件类型和部件的几何布局等内容。 35 \ 第4章 程序主窗口—— QMainWindow 卢传富
Qt
应用程序的主窗口是由多个部件/组件构成的框架,本章通过一个简单文本编辑器的例子,介绍了主窗口的菜单、工具条、中心部件、锚接部件和状态条,并通过
Qt
设计器绘制和手写代码两种方法实现了简单文本编辑器主窗口界面的排布和管理。 87 \ 第5章 布局管理 卢传富布局管理是GUI应用程序编程的一个重要方面。
Qt
提供了多种布局管理部件,包括
Qt
布局管理器、分裂器、栈部件、工作空间部件和多文档区部件等。本章一一介绍了这些部件,并举例说明了它们在图形用户界面编程中的应用。 121 \中级篇 第6章 2D绘图 蔡志明本章内容较多,包括
Qt
的绘图要素、图形变换与坐标系统、绘图设备、图像处理、图像打印等。最后讲解了
Qt
4图形系统的模型视图框架——Graphics View框架。 152 \ 第7章 拖放操作与剪贴板 蔡志明 本章简要地说明了基于MIME的拖放操作和剪贴板的使用,关于Graphics View框架的拖放操作也在本章。 212 \ 第8章 文件处理 蔡志明介绍了
Qt
的文件处理,包括基于流的文本文件和二进制文件处理,文件信息和目录操作,目录以及文件的变化监控,文件引擎的编写。 219 \ 第9章 网络 李立夏介绍了
Qt
的网络处理,包括编写常见的FTP、HTTP、UDP和TCP程序,以及访问底层网络接口信息和扩展
Qt
网络模块功能的方法。 227 \ 第10章 多线程 李立夏介绍了
Qt
的多线程处理,包括两方面内容:传统的线程操作,以及与
Qt
事件
机制相关的操作。这一章还涉及较多的基本概念,并逐一做了介绍。 261 \ 第11章
事件
机制 李立夏介绍了
Qt
的
事件
处理
模型,详细介绍了在
Qt
程序设计中处理
事件
的五种方法,并讨论了如何利用
Qt
事件
机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了
Qt
的数据库处理,重点介绍了如何在
Qt
中使用SQL语句进行数据库操作和如何利用QSqlTableModel这类高层次类进行常见的数据库编程。 297 \ 第13章
Qt
的模板库和工具类 卢传富 \蔡志明
Qt
提供了丰富的模板库和工具类,本章只是介绍了部分内容。在这一章,重点介绍了
Qt
的容器类、QString和QVariant类,简介了
Qt
的算法和
Qt
正则表达式的使用。 326 \ \ \续表 \篇章 章 名 作者 内 容 简 介 页码 \高级篇 第14章 XML 蔡志明对
Qt
中的三种XML解析方式(DOM、SAX和基于流的解析)进行了比较和举例。还讲解了如何使用API写XML文件。 348 \ 第15章 模型/视图结构 蔡志明阐述了
Qt
的模型/视图结构,分别对模型视图的三个组成部分(模型、视图和代理)进行了介绍,演示了如何自定义这些组成部分,并简要说明了拖放以及选中操作。 366 \ 第16章 高级绘图 蔡志明叙述了在
Qt
中如何使用OpenGL绘图,对基本的OpenGL绘图进行了讲解,介绍了矢量图型文件SVG的读写操作。 406 \ 第17章 进程间通信 李立夏 介绍进程和进程间通信的知识,重点介绍了
Qt
中桌面环境下基于D-Bus的多进程应用程序开发。 421 \ 第18章
Qt
插件 蔡志明 说明了
Qt
的插件系统,并对
Qt
Designer插件、数据库插件、风格插件进行了较详细的介绍。 442 \ 第19章 脚本——
Qt
Script 蔡志明 这是
Qt
4.3中引入的最新内容,使得
Qt
能够支持ECMAScript脚本。本章简要地举例说明了在
Qt
中如何使用脚本,如何将C++对象暴露给脚本。 459 \ 第20章 国际化 骆艳 本章包括编码的处理,
Qt
Linguist的使用步骤,动态语言切换的内容。 468 \ 第21章
Qt
单元测试框架 蔡志明 本章阐述了如何使用
QT
estLib框架进行数据测试、GUI测试。 478 \ 附录A~E 蔡志明附录中包括
Qt
在Linux、Windows、Solaris上的安装,KDevelop、Eclipse集成开发环境的使用,qmake的基本应用,
Qt
源代码分析举例,
Qt
资源。 485 \如何获取源代码 \由于
Qt
是跨平台的,因此书中的内容应用能够在Windows、Linux、UNIX和Mac OS上运行,书中的程序可能是在下列三种平台之一上编写:Windows XP/Vista、Linux(SuSE、Fedora Core或红旗)以及Solaris 10 SPARC/X86。因此书中的屏幕截图可能
来源
于其中的任何一种操作系统。
Qt
16,235
社区成员
26,649
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章