信号槽系统
来源:互联网 发布:淘宝px是什么意思 编辑:程序博客网 时间:2024/06/05 08:59
信号槽:一个对象(sender)上由于某件事情的发生而广播一个信号(signal),通过connect函数进行连接,另一个对象(receiver)可以接收这个信号并调用一个槽函数(slot)作为响应。
connect函数的基本形式:QObjectconnect(sender,signal,receiver,slot)
QT5中QObject : : connect()的五个重载如下:
(1)QMetaObject::Connection connect(const QObject *, const char *,
const QObject *, const char *,
Qt::ConnectionType);
(2)QMetaObject::Connection connect(const QObject *, const QMetaMethod &,
const QObject *, const QMetaMethod &,
Qt::ConnectionType);
(3)QMetaObject::Connection connect(const QObject *, const char *,
const char *,
Qt::ConnectionType) const;
(4)QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
const QObject *, PointerToMemberFunction,
Qt::ConnectionType)
(5)QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,
Functor);
以connect函数的基本形式分析以上五种重载:
1.对于第一二四种重载,sender和receiver都是QObject,区别在于信号函数和槽函数有三种类型:const char *、QMetaMethod &和PointerToMemberFunction。
其中PointerToMemberFunctio指的是信号、槽函数的指针,比较容易理解。
QMetaMethod根据文章作者的解释,可以看作QMetaMethod的子类,目前我没有学习到相关内容,暂且理解为某种特殊的函数。
const char*是字符串,根据作者的解释,使用SIGNAL(信号函数名)和SLOT(槽函数名)的宏,可以将其转化为字符串。
2.对于第三种重载,相较于第一种,缺少了receiver,此处默认将this指针当作receiver。
3.对于第五种重载,Functor指的是static函数、全局函数和Lambda表达式(C++11)。
注意带参数的信号槽函数,实际上是信号函数将参数传给了槽函数,因此槽函数的参数数目不能够多于信号函数。
除了QT内置的组件已经实现的信号,对于自定义类的自定义信号槽使用如下:
1.sender类的public成员中,额外定义signals成员,signals成员的声明方式等同于普通的函数,但是不需要也不能有具体的实现。
2.通常在sender类的其他成员函数中发射该信号,语法为:emit 函数名。
3.通过connect进行连接工作。
关于lambda表达式:
http://www.cnblogs.com/haippy/archive/2013/05/31/3111560.html
- 信号槽系统
- 信号与系统
- Linux系统中的信号
- linux系统中的信号
- 信号与系统
- 大话信号与系统
- Unix系统信号
- Linux系统中的信号
- UNIX 系统信号
- 信号与系统
- Unix系统信号
- 漫谈信号与系统
- unix系统信号
- 系统信号处理机制
- 信号与系统
- linux系统中的信号
- linux系统编程--信号
- 信号与系统
- 程序内部或controller中发起post请求,调用http接口
- Android中Activity四种启动模式和taskAffinity属性详解
- node npm
- 设计链表进行插入、删除(面试题)
- myBatis 多对多例子
- 信号槽系统
- 西电捷通TISec解决方案保障配电网通信安全
- linux系统将设备分为3类:字符设备、块设备、网络设备
- redis基本介绍--从菜鸟到熟悉||20170601redis管道命令介绍
- 中国黑客养成记:现在我想做一个好人
- Maven环境搭建和介绍
- 用A链接对象解析url的组成
- 线性规划问题和MATLAB函数linprog的使用
- C语言中局部变量与全局变量在内存中的存放位置