- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摘要
Qt 是一个跨平台的 C++图形用户界面应用程序框架。本程序利用 Qt 提供
的相关类,实现了俄罗斯方块的基本功能。
关键字: QT 、嵌入式、软件开发
一.功能说明
支持俄罗斯方块游戏的基本功能
支持虚拟按键
二.开发环境
操作系统: ubuntu 10.04 LTS;
开发工具: gnu 编译工具链 (gcc 等) 、Qt Creator、Qt 4.6.2。
2.1 Qt 简介
Qt 是跨平台的应用程序和 UI 框架。它包括跨平台类库、 集成开发工具和跨
平台 IDE 。使用 Qt ,只需一次性开发应用程序,无须重新编写源代码,便可跨
不同桌面和嵌入式操作系统部署这些应用程序。
2.2Qt 开发基础
2.2.1Qt 对象与对象树
QObject 是所有 Qt 类的基类。 QObject 组织成为对象树。 当你创建 QObject
时,将另外的对象作为其父对象, 这个对象就被加入其父对象的 children() 列表,
并且当父对象销毁时, 这个对象也能够被销毁。 事实证明, 这种实现方法非常适
合 GUI 对象。例如,一个 QShortcut (键盘快捷键)对象是相关窗口的子对象,
所以当用户关闭窗口时,这个对象也能够被删除。
QWidget 作为所有能够显示在屏幕上的组件的父类,扩展了这种父子关系。
一个子对象通常也成为一个子组件,就是说,它被显示在父组件的坐标系统中,
受到父组件的边界影响可能会有剪切等等。 例如,当应用程序销毁掉已关闭的消
息对话框时, 对话框上面的按钮和标签一起被销毁, 就像我们希望的那样, 因为
这些按钮和标签都是对话框的子对象。
2.2.2 信号与槽
在 GUI 编程中,当我们改变了一个组件,我们经常需要通知另外的一个组
件。更一般地,我们希望任何类型的对象都能够与另外的对象通讯。例如,如果
用户点击了关闭按钮,我们希望窗口的 close() 函数被调用。
早期工具库对这种通讯使用回调实现。回调是一个指向一个函数的指针,所
以如果你希望某种事件发生的时候, 处理函数获得通知, 你就需要将指向另外函
数的指针(也就是这个回调)传递给处理函数。这样,处理函数就会在合适的时
候调用回调函数。回调有两个明显的缺点:第一,它们不是类型安全的。我们不
能保证处理函数传递给回调函数的参数都是正确的。 第二,回调函数和处理函数
紧密地耦合在一起,因为处理函数必须知道哪一个函数被回调。
第 1 页 共 19 页
在 Qt 中,我们有回调技术之外的选择:信号槽。当特定事件发出时,一个
信号会被发出。 Qt 组件有很多预定义的信号,同时,我们也可以通过继承这些
组件,添加自定义的信号。槽则能够响应特定信号的函数。 Qt 组件有很多预定
义的槽,但是更常见的是, 通过继承组件添加你自己的槽, 以便你能够按照自己
的方式处理信号。
信号槽机制是类型安全的:信号的签名必须同接受该信号的槽的签名一致
(实际上,槽的参数个数可以比信号少, 因为槽能够忽略信号定义的多出来的参
数)。既然签名都是兼容的,那么编译器就可以帮助我们找出不匹配的地方。信
号和槽是松耦合的:发出信号的类不知道也不关心哪些槽连接到它的信号。 Qt 的
信号槽机制保证了, 如果你把一个信号同一个槽连接, 那么在正确的时间, 槽能
够接收到信号的参数并且被调用。信号和槽都可以有任意类型的任意个数的参
数。它们全部都是类型安全的。
所有继承自 QObje
原创力文档


文档评论(0)