- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 信号与槽
第二章 信号与槽;信号与槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性。
信号与槽机制是Qt中非常重要的机制,也是Qt中所特有的一种机制,几乎贯穿整个Qt的学习过程中。
;信号与槽简介
预定义信号与槽
自定义信号与槽
;在GUI用户界面中,当用户操作一个窗口部件时,需要其它窗口响应或者可以激活其它的操作。在我们所熟知的很多 GUI 工具包中,窗口小部件 (widget) 都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在 QT 中信号与槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。
;所有从 QObject 或其子类 ( 例如 Qwidget) 派生的类都能够包含信号与槽。当对象改变其状态时,信号就由该对象发射 (emit) 出去,这就是对象所要做的全部事情,它并不知道另一端是谁在接收这个信号。这个过程就是真正的信息封装,它确保对象是被当作一个真正的软件组件来使用的。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。
;信号与槽通过QObject::connect( const QObject * sender,const char * signal, const QObject * receiver, const char * method, Qt::Connection type = Qt::AutoCompatConnection )函数关联,参数type 定义了信号与槽的关联方式,决定一个信号是立即传递到槽还是排队等待以后传递。;Qt::ConnectionType定义信号和槽关联方式有三种:
Qt::DirectConnection:信号发送后立即传递给相关联的槽,只有槽函数执行完毕返回后,发送信号“emit信号”之后的代码才被执行。
Qt::QueuedConnection:信号发送后排队,直到事件循环(event loop)有能力将它传递给槽,而不管槽函数有没有执行
Qt::AutoCompatConnection:如果信号和槽在同一个线程,信号发出后槽函数立即执行;Qt信号与槽机制的优点:
类型安全的:需要关联的信号与槽的参数类型和参数个数必须是等同的。
松散耦合的:Qt信号和槽机制减弱了Qt对象的耦合度。
;当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。只有定义过这个信号的类及其派生类能够???射这个信号。当一个信号被发射时,与其相关联的槽将被立刻执行,就象一个正常的函数调用一样。信号与槽机制完全独立于任何 GUI 事件循环。如果存在多个槽与某个信号 相关联,那么,当这个信号被发射时,这些槽将会一个接一个地 执行;但是它们执行的顺序将会是随机的、不确定的,不能随意地指定哪个先执行、哪个后执行。
;信号的声明是在头文件中进行的,QT 的 signals 关键字指出进入了信号声明区,随后即可声明自己的信号。例如,下面定义了三个信号:
signals:
void mySignal();
void mySignal(int x);
void mySignalParam(int x,int y);
;槽是普通的 C++ 成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。
;既然槽是普通的成员函数,因此与其它的函数一样,它们也有权限。槽的权限决定了谁能够与其相关联。同普通的 C++ 成员函数一样,槽函数也分为三种类型:
public slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。
protected slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。
private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。;槽的声明也是在头文件中进行的。例如,下面声明了三个槽:
public slots:
void mySlot();
void mySlot(int x);
void mySignalParam(int x,int y);
;通过调用 QObject 对象的 connect 函数来将某个对象的信号与另外一个对象的槽函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用。该函数的定义如下:
bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member )
;一个信号甚至能够与另
您可能关注的文档
- 第二-三讲商务信函的书写规范及训练.ppt
- 第二个 青岛版二年级上册第五单元美丽的校园认识方向单_元_备_课.doc
- 第九章、灰分的测定.ppt
- 第九课第一框 生活需要法律 课件.ppt
- 第二十七章 制订计划2.ppt
- 第二十二讲:常见化工设备的基本结构和特点_设备图的视图表达_焊缝简介_以及绘制.ppt
- 第九课第一节海纳百川有容乃大.ppt
- 第二十八章危害国防利益的犯罪.ppt
- 第二十四讲 作图分析法解决问题.ppt
- 第九课第一框《处处有竞争》课件.ppt
- 基于瞬态测量原理的电磁流量测量:方法、实现与应用探究.docx
- 材料力学基础概念:剪切模量:弹性与塑性变形分析.docx
- 双臂机器人拟人化动作与协调控制:理论、方法与实践探索.docx
- 材料力学基础概念:剪切模量:材料的剪切模量与温度的关系.docx
- 基于SOPC的图像边缘特征检测技术的深度剖析与创新应用.docx
- 材料力学基础概念:剪切模量:剪切模量的概念与定义.docx
- 材料力学基础概念:极限强度:弯曲强度与梁的理论.docx
- 材料力学基础概念:剪切模量:复合材料的剪切模量分析.docx
- 水资源优化配置决策支持系统:理论、实践与创新发展.docx
- 材料力学基础概念:剪切模量:剪切模量对材料疲劳性能的影响.docx
文档评论(0)