- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Company Logo Qt信号和槽 QA 谢谢大家! Company Logo Qt信号和槽 Qt的窗口部件有很多预定义的槽,当一个特定事件发生的时候,一个信号被发射,对信号感兴趣的槽就会调用对应的响应函数。 信号/槽机制是在QObject类中实现的。在QObject类或者其一个子类(比如:QWidget类)继承的所有类中,都存在了信号和槽。当对象改变其状态的时候,信号被发送,对象不关心有没有其他对象接收到这个信号。槽是类的正常成员函数,可以将信号和槽通过connect()函数任意连接。当一个信号被发射,它所连接的槽会被立即执行,如同一个普通函数调用一样。 Company Logo Qt信号和槽 槽 当信号被发出时,会调用与之相连接的槽。槽是普通的C++函数,可以用普通的方式来调用。它唯一特殊的地方在于可以与信号相连接。槽的参数不能有默认值。同样,信号的参数也不能有默认值。在槽的参数中尽量不使用自定义的数据类型,因为这样将会使通用性降低。 既然槽和普通的成员函数差不多,它们和普通成员函数一样有访问限制,根据槽的访问,限制谁可以与它们相连接,并分为以下三种情况。 Company Logo Qt信号和槽 public slot: 任何信号都可以与之相连接。这在窗口部件编程中非常有用,用于创建一些对彼此一无所知的对象,只有通过信号和槽来交换信息。public slot就像是标准的铁路一样。 protected slot: 只有该类及其子类所派生的对象的信号才可以与之相连接。这类槽的目的通常是为了类的完善,而不是类与外界的接口。 private slot: 只有该类自己的信号才可以与之相连接。 当然还可以将定义为virtual,这将非常有用。 信号和槽是相当高效的。当然,它们与“实时”的回调函数相比,在增加了灵活性的同时也损失了一些速度,正所谓有利必有弊,但是这种速度的损失相当微不足道。因此,信号/槽机制具有简便性和灵活性的特性,使用信号和槽是用户交互的必然选择。 Company Logo Qt信号和槽 槽的声明也是在头文件中进行的。例如,下面声明了三个槽: public slots: void mySlot();void mySlot(int x);void mySignalParam(int x,int y); Company Logo Qt信号和槽 信号 当某个信号所对应的客户或其所有者的内部状态发生改变时,信号被一个对象发射。只有定义过这个信号的类及其派生类能够发射这个信号。当一个信号被发射时,与其相关联的槽将被立刻执行,就象调用一个正常的函数一样。信号-槽机制完全独立于任何GUI事件循环。只有当所有的槽返回以后发射函数(emit)才返回。如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪个后执行。 例如,一个列表框可以发出highlighted()和activated()的信号,大多数对象也许只对activated()的信号感兴趣,但也许有些对象需要知道该列表框中的哪一项被选中了。如果有两个不同的对象对一个信号感兴趣,只要将该信号连接到这两个对象的槽上就可以了。 Company Logo Qt信号和槽 信号是由MOC自动生成的,必须在.cpp文件中实现,而且永远没有返回值。 Company Logo Qt信号和槽 元对象系统的概述 Qt中的元对象系统是用来处理对象间的通信:信号/槽机制、运行时的类型信息和动态属性系统。它基于QObject类、类声明中的Q_OBJECT宏和元对象编译器(MOC)。 MOC读取C++源文件,如果发现类的声明中含有Q_OBJECT宏,则为含有Q_OBJECT宏的类生成另一个含有元对象代码的源文件,并和这个类的实现一起被编译和连接(或者它被包含到(#include)这个类的源文件中)。 Company Logo Qt信号和槽 元对象系统不但提供对象间通信的信号/槽机制,而QObject中的元对象代码能够实现以下特性: className()函数:该函数在运行的时候,以字符串返回类的名称,不需要C++编译器中的本地运行类型信息(RTTI)的支持。 interits()函数:该函数返回本对象在QObject继承树中一个特定类的实例。 tr()和trUtf8()函数:该函数用于国际化中的字符串的翻译。 setProperty()和property()函数:该函数用来通过名称动态设置,并且获得对象属性。 metaObject()函数:该函数返回这个类所关联的元对象。 Company Logo Qt信号和槽 只有在类的定义中声明了Q_OBJECT宏,该类才能够使用元对象
您可能关注的文档
最近下载
- 摄像头检验作业指导书.doc VIP
- 《城镇污水污泥流化床干化焚烧技术规程》(征求意见稿).pdf
- 阿奇沙坦非无菌化学原料药车间设计--本科毕业论文.docx VIP
- 办公用品供货服务计划方案.docx VIP
- 用于透明细胞肾细胞癌分型和评估透明细胞肾细胞癌预后的基因及其应用.pdf VIP
- G 正谱 赶圩归来阿里里 林凯 合吧声乐歌谱正谱子五线谱钢琴伴奏谱乐谱曲 谱弹唱谱歌曲乐曲.pdf VIP
- 零星工程施工方案范本(3篇).docx VIP
- 新疆四史应知应会内容.doc VIP
- 眼科显微器械的清洗流程.pptx VIP
- Lesson9-10Howareyoutoday(课件)新概念英语第一册.pptx VIP
文档评论(0)