18-第五章 Qt程序设计2_第1页
18-第五章 Qt程序设计2_第2页
18-第五章 Qt程序设计2_第3页
18-第五章 Qt程序设计2_第4页
18-第五章 Qt程序设计2_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第5章Qt程序设计2-——BasedonQt(WindowsEdition)信号与槽关于这节课Aboutthiscourse.“One

在Qt程序设计的过程中,有4个非常重要的概念需要熟练掌握,分别为布局管理器,信号与槽,模态、半模态和非模态对话框,以及多线程,本章将详细介绍这4个概念。目录实验内容实验原理实验步骤本节任务实验内容信号与槽(signal&slot)是Qt编程的基础,也是Qt不同于其他开发框架的核心特征。信号与槽用于完成界面操作的响应,是实现任意两个对象之间通信的机制。本节先介绍信号与槽的特点和用法,然后通过一个简单的实验来介绍实际应用。实验原理

Qt的窗口部件在用户操作或内部状态发生变化时,会发出特定的信号来通知关注这个信号的对象。槽就是用于响应信号的函数,可以通过关键字public/protected/privateslots在类中进行声明。槽函数与一般函数不同的是:槽函数可以与信号关联,当信号发出时,与之关联的槽函数将会自动执行。与槽函数关联的信号除了可以是操作窗口部件自动发出的信号,还可以是用户自定义的信号,这些信号在类中用关键字signals声明,且无需定义,返回值为void类型。槽函数可以有参数,但参数类型必须与信号的参数类型相对应,参数个数不能多于信号的参数个数(参数个数少于信号的参数个数时,缺少的只能是最后一个或几个参数)。若要将一个窗口部件的变化情况通知给另一个窗口部件,则一个窗口部件发出信号,另一个窗口部件的槽接收此信号并进行相应的操作,这样即可实现两个窗口部件之间的通信。每个Qt对象都包含若干个未定义的信号与槽,当某个特定事件发生时,会发射一个信号,与该信号关联的槽函数则会响应信号并完成相应处理。例如,按钮PushButton最常见的信号就是单击时发出的clicked()信号;组合框ComboBox最常见的信号是列表项中发生改变时发出的CurrentIndexChanged()信号,合理地利用这些信号可以使程序的逻辑设计变得更简便。1.信号与槽简介2.信号与槽的用法信号与槽的关联是通过QObject::connect()方法来实现的,connect()是QObject类的一个方法,QObject类是所有Qt类的基类,在实际调用时可以省略前面的限定符。具体格式如下:connect(Object1,SIGNAL(signal()),Object2,SLOT(slot()));Object1为发出信号的对象Object2为接收信号的对象signal()为待发送的信号slot()是信号接收对象的槽函数3.信号与槽的连接方式信号与槽并非只能是一一对应的关系,一个信号可以关联到多个槽,多个信号也可以关联到同一个槽,甚至一个信号还能关联到另一个信号,如下图所示:(1)一个信号关联多个槽:

当一个信号关联多个槽时,若该信号触发,槽函数将按照关联的顺序依次执行。在上述代码中表现为:对象Object2发出信号signal2()时,对象Object1依次执行槽函数slot1()和slot2()。(2)多个信号关联同一个槽:

当多个信号关联同一个槽时,其中任何一个信号触发都将执行槽函数。在上述代码中表现为:无论对象Object3发出信号signal1()还是signal2(),对象Object2都会执行槽函数slot2()。(3)一个信号关联另一个信号:

当一个信号关联另一个信号时,前者的发出将触发后者发出。在上述代码中表现为:对象Object1发出信号signal1()时,对象Object2也将发出信号signal1()。信号与槽除了可以使用connect()方法进行手动关联,还可以用自动关联的方式实现:双击ui文件进入设计模式,从左侧控件栏中将控件移入界面后,右键单击控件,在弹出的菜单项中选择“转到槽”,选择一个信号并单击OK按钮。此时,在.h和.cpp文件中会分别自动添加槽函数的声明和实现,槽函数名的格式为:on_xxx_xxx(),含义为:on_控件名称_信号类型(),如on_button_clicked()。4.信号与槽的特点(1)类型安全信号与槽在参数类型上一一对应,且槽的参数个数不能多于信号的参数个数(槽的参数个数少于信号的参数个数时,缺少的只能是最后一个或几个参数)。若在编写代码时出现信号与槽参数类型不对应或信号的参数个数少于槽等错误,编译器就会报错。(2)松散耦合信号与槽机制减弱了Qt对象的耦合度。发出信号的对象只需在适当的时机将信号发出即可,无需知道此信号将被哪些槽接收,是否已被接收。同样的,槽也不需要知道哪些信号关联了自己,只需在收到信号后执行槽函数即可。(3)灵活简便信号与槽机制使界面中各个组件的交互操作变得十分灵活简便。虽然与回调函数相比,信号与槽机制的运行速度偏慢,但对于实时程序来说,相较于信号与槽机制带来的灵活性和简便性,这一点点性能损耗是可以忽略的。实验步骤新建项目添加C++Class完善nam

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论