文件名称:信号和槽机制-半桥llc谐振变换器设计仿真讲义(南航)
文件大小:3.42MB
文件格式:PDF
更新时间:2024-06-23 11:49:16
Linux,QT4,图形界面,MySQL,
2.3 信号和槽机制 《Linux环境下 Qt4图形界面与 MySQL编程》本书以“图形界面编程控件与数据库编程 基础→简单易学的实例→实际工程项目开发与场景分析”为写作主线,以当前最新的 Qt4.7 为依据,采用“深入分析控件+实例解析”的方式,并配合经典的实际工程项目,对 Linux 操作系统下的 Qt4.7与 MySQL编程技术进行了全面细致的讲解。本节为大家介绍信号和槽机 制。 1.概述 Qt 采用了一种全新的对象和方法的关联与通信机制,称为信号和槽机制。信号和槽机制是 独立于标准 C++编译器的,在编译之前需要经过 Qt的专门预处理工具 MOC(Meta Object Compiler,元组件编译器)对代码进行预处理后才能进一步进行 C++代码的编译。MOC 会将 Qt 应用程序中特有的代码自动转化为相应的标准 C++语法代码。 信号和槽的概念是 Qt编程中最具代表性的特点之一。GUI 编程中通常使用回调函数进行事 件处理,而回调函数通常是一个函数指针,不同的事件、不同的对象都有着各自的回调函数。 当事件到来时,系统会通过调用对应的回调函数来完成相应的处理。 Qt 引入了信号和槽机制来取代回调函数。凡是继承自 QObject的类都可以具有信号和槽成 员,并可以使用它们。信号和槽的使用可以有效地减少函数指针的使用,使程序代码清晰简 洁,对于事件响应管理更加容易。此外,信号和槽没有严格规定函数的类型,因此在调用过 程中是安全的。 信号和槽的使用可以实现信息封装,增加程序的灵活性。信号和槽都采用函数作为存在形式。 在 Qt程序初始化或运行的过程中,可以静态或动态地将信号和槽相关联。当某一事件到来 时,会发射信号,但是发射后,它并不需要关心信号的处理者是谁。当触发槽函数时,说明 与其关联的信号被接收,但它不需要了解谁发出了信号,它只需要负责进行相应的处理即可。 2.信号 信号是 Qt中对事件的一种抽象,当一个事件到来时,会发射信号。所谓的发射信号,就是 通过 Qt 中特有的通信机制,调用和信号相关的各个槽函数。因此当发射信号时,将执行与 其相关联的槽函数。信号采用函数的形式,因此,当所有与信号关联的函数全部返回后,信 号函数才会返回。信号函数在形式上与标准 C++中的虚函数类似,信号函数只有头文件中函 数的声明,而没有函数的定义(即函数体)。信号的声明形式如下: