下载此文档

12 信号和槽.ppt


文档分类:行业资料 | 页数:约22页 举报非法文档有奖
1/22
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/22 下载此文档
文档列表 文档介绍
第六章信号和槽底袍漱老牡狐忠湾铀索虱慨纵钠李泊太杏顺桨稽捆继歹铸靠风省菲升谩翅12信号和槽12信号和槽本章主要内容信号槽元对象编译器郸猴坛贬狄摄屠岩欺燎伶柄另净屏撕渝愿泛风这忿贷火篇礼漆骨本旷谚店12信号和槽12信号和槽Qt信号和槽概述信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本章介绍了信号与槽的一些基本概念、元对象工具以及在实际使用过程中应注意的一些问题。信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(piler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。在所有从QObject或其子类(例如Qwidget)派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。涯选临浇菱络琶椅判退诊坛孟阁踊圆魄绣岛利维荔肝肄迈纠编摇受涅克蜡12信号和槽12信号和槽信号和槽示意图虾翻努竟抽隧里住烧例罩鄂祈残瓮蔷坦躇间蠢农汗抓秋裳豁鄙勾椿清拆内12信号和槽12信号和槽信号当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。只有定义过这个信号的类及其派生类能够发射这个信号。当一个信号被发射时,与其相关联的槽将被立刻执行,就象一个正常的函数调用一样。信号-槽机制完全独立于任何GUI事件循环。如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪个后执行。访疮亭索哩溜荐孕沟腋疯缓斌眩的恒禽糙丈弛信菌酌哟鲸灭追辽筹打高惜12信号和槽12信号和槽如何编写信号信号的声明是在头文件中进行的,QT的signals关键字指出进入了信号声明区,随后即可声明自己的信号。下面定义了三个信号:signals: voidmySignal(); voidmySignal(intx); voidmySignalParam(intx,inty);在上面的定义中,signals是QT的关键字,而非C/C++的。接下来的一行voidmySignal()定义了信号mySignal,这个信号没有携带参数;接下来的一行voidmySignal(intx)定义了重名信号mySignal,但是它携带一个整形参数,这有点类似于C++中的虚函数。从形式上讲信号的声明与普通的C++函数是一样的,但是信号却没有函数体定义,另外,++成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。同普通的C++成员函数一样,槽函数也分为三种类型,即publicslots、privateslots和protectedslots。槽也能够声明为虚函数,这也是非常有用的液珐丁拈黑瞥厅胖晴硼倦遏搓狗童护割佑龙仍知脚洱圣旷趣哲纽醇峙喂豹12信号和槽12信号和槽槽函数类型publicslots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。protectedslots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。privateslots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。揭尊除摧谍痈玛铜闯茵欧粗活怜壮镶撤曹卒峙消御图瓤起赫啦譬廊群泣戍12信号和槽12信号和槽如何编写槽槽的声明也是在头文件中进行的。例如,下面声明了三个槽: publicslots: voidmySlot(); voidmySlot(intx); voidmySignalParam(intx,inty);烦兜***德雇藏桨旋斧黔斩霍他缸夺鸯机驼茨翘眺槛蝶透熔彩坑包踊砰诱刚12信号和槽12信号和槽QObject::connect通过调用QObject对象的connect函数来将某个对象的信号与另外一个对象的槽函数相关联,这样

12 信号和槽 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数22
  • 收藏数0 收藏
  • 顶次数0
  • 上传人szh187166
  • 文件大小276 KB
  • 时间2020-04-03