Qt模块化笔记之core——使用信号与槽
来源:互联网 发布:产品研发部 数据公司 编辑:程序博客网 时间:2024/05/16 01:58
信号(signal)与槽(slot)就像插头与插座,有些不同的是,信号可以连接多个槽,槽也可以被多个信号连接。
Qt中的信号形式上像是一个函数,不需要具体实现,槽也是一个函数,需要书写内部的执行代码。信号一触发,所连接的槽函数就执行。
它们之间用语句connect连接:
当前Qt5版本有传统的信号槽与新推出的两种,使用形式分别如下:
QObject::connect(sender, SIGNAL(signalName(T)), receiver, SLOT(slotFunction(T)));QObject::connect(&sender, &sender::sinal,&receiver, &receiver::slotFunction);
QObject部分可省略,它也表明connect 像是QObject的一个函数。不是QObject就不能使用信号槽。
SIGNAL与SLOT是传说中的宏了,本篇倾向于初学者,不讨论。记住两种形式。
新推出的方法中,&表示引用。在连接信号槽之前,对象要已经存在。
用汉语表示的形式:传统形式:QObject::connect(信号发送者,SIGNAL(信号名(参数1,参数2))),信号接收者,SLOT(槽函数(参数1,参数2));
新式形式,省略了两个宏。而且参数部分不需要写了。信自动一一对应传递。
查看下面两个类的声明代码:
#include <QObject>class Sender : public QObject{ Q_OBJECTpublic: Counter();signals: void valueChanged(int Value);};
#include <QObject>class Receiver: public QObject{ Q_OBJECTpublic: Counter();public slots: void setValue(int value);};
要使用信号槽机制,必需让你定义的类继承自QObject或它的子类,而且需要在声明最顶部放上Q_OBJECT宏。就像上面那样。
那connect放在哪?一般在函数的构造函数中使用它,类一初始化完成,信号槽就连接好。当然也可以临时连接。
使用如下:
Sender a;Receiver b; QObject::connect(&a, &Sender ::valueChanged, &b, &Receiver ::setValue); //connect(a, SIGNAL(valueChanged(int)), b, SLOT(setValue(int)));
0 0
- Qt模块化笔记之core——使用信号与槽
- Qt模块化笔记之core——QXmlStreamReader的使用
- Qt模块化笔记之core——动画框架
- Qt模块化笔记之core——线程相关
- Qt模块化笔记之core——QXmlStreamWriter写XML
- Qt模块化笔记之core——容器类归纳
- Qt模块化笔记之core——事件QEvent
- Qt模块化笔记之core——容器类归纳
- Qt模块化笔记之core——使用QJsonDocument解析JSON
- Qt模块化笔记之core——使用QJsonDocument输出JSON数据
- Qt模块化笔记之core——Input/Output文件操作-流QTextStream使用
- Qt模块化笔记之core——Input/Output文件操作-流QDataStream使用
- Qt模块化笔记之core——Input/Output文件操作(1)
- Qt模块化笔记之core——Input/Output文件操作(2)
- Qt模块化笔记之core——Input/Output文件操作(3)
- Qt模块化笔记之core——认识XML可扩展标记语言
- Qt模块化笔记之core——QXmlStreamReader的几个函数返回值类
- Qt模块化笔记之core——认识JSON,联系QJson
- python+eclipse 开发环境配置 http://pydev.org/updates
- LeetCode 150 — Evaluate Reverse Polish Notation(C++ Java Python)
- Apache+Tomcat集群配置
- Eclipse ADT 使用空格替代Tab键缩进整块整块代码
- C++ COM编程生成随机GUID值
- Qt模块化笔记之core——使用信号与槽
- 写得很好的linux学习笔记
- 字符串左旋
- 《JavaScript DOM编程艺术》学习笔记<一>
- 通配符与正则表达式区别(二)
- 案例217 播放本地MP3文件
- 使用Google帐号登录Android应用
- 题目1207:质因数的个数
- copy和mutablecopy