槽和普通c++成员函数一样只可以为虚函数,也可以被重用,可以是公有的也可以是私有的,也可以被其它的c++函数调用;

参数也是任意的

唯一不同的是本槽和信号是可以连在一起的,和c#的事件差不多。相连后每当发射这个信号后就会自动调用这个槽

connection(sender,SIGNAL(signal),receiver,SLOT(slot));

sender就发送信号的Qobject指针

receiver是槽的Qobject指针

signal和slot是只有形参的函数名。SIGNAL和SLOT宏会把它们的参数转换为相应的字符串

1.一个信号可以连接多个槽

在发射信号的时候顺序不确定

.h

    private slots:void Open1();void Open2();

.app

myQt::myQt(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open1()));QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open2()));
}void myQt::Open1()
{QMessageBox msg;msg.setText("Open1!");msg.exec();
}
void myQt::Open2()
{QMessageBox msg;msg.setText("Open2!");msg.exec();
}

2.多个信号可以连接同一个槽

QObject::connect(ui.btn_Open,SIGNAL(clicked()),this,SLOT(Open1()));QObject::connect(ui.btn_ClickBool,SIGNAL(clicked()),this,SLOT(Open1()));

3.一个信号可以与另外一个信号相连

    QObject::connect(ui.btn_Open,SIGNAL(clicked()),ui.btn_ClickBool,SLOT(click()));

4连接可以被删除

删除所有的连接

    QObject::disconnect(ui.btn_Open,0,0,0);//或者ui.btn_Open->disconnect();

删除指定的连接

    QObject::disconnect(ui.btn_Open,SIGNAL(clicked()),0,0);//或者ui.btn_Open->disconnect(SIGNAL(clicked()));

删除两个关联对象的连接

    QObject::disconnect(ui.btn_Open,0,ui.btn_ClickBool,0);//或者ui.btn_Open->disconnect(ui.btn_ClickBool);

要把信号成功的连接到槽(或者是连接到另外一个信号),它们的参数必须具有相同的顺序和相同的类型。

这里有个例外,如果信号的参数比它所连接的槽的参数多,那么多余的参数将会被忽略

转载于:https://www.cnblogs.com/li-peng/p/3650682.html

Qt学习笔记 信号和槽相关推荐

  1. QT学习之②信号与槽,以及链接实现方法

    QT学习之②信号与槽 ~QQ:3020889729 ~小蔡 信号与槽的意义 信号与槽的实质(文字:举例) 信号与槽的工作(图解) 信号与槽的创建 信号的声明 槽函数的声明 槽函数的实现 (无重载)信号 ...

  2. Qt工作笔记-信号与槽参数匹配问题

    今天,我把Qt3代码转化为Qt5,控件啥的都要换,李主任说了下为什么以前的信号和槽函数参数不匹配!!这句话让我对Qt中的信号与槽进一步有了了解. 下面的这个演示源码是基于这个博客的 https://b ...

  3. Qt学习笔记-----信号槽

    Qt提供signals and slots mechanism(信号槽机制)来保证两个对象之前的关联(connection). 所谓信号槽,简单理解就是两部分,一个是某对象发出的信号,一个是某对象接收 ...

  4. Qt学习笔记5-信号槽机制

    以<C++ GUI Programming with Qt 4, Second Edition>为参考 前几节提到过信号槽,此次来深入了解一下信号槽机制. 信号槽机制是Qt的一个基础,它使 ...

  5. QT学习之信号和槽,图片的添加

    信号和槽 给控件改名字 为了分析代码方便,我们要给控件改名字,要通俗易懂. 例如:双击登陆后鼠标会选中右边的logoBt,即可修改名称. 什么是信号和槽 信号:信号就是指控件发出的特定信号. 比如按钮 ...

  6. Qt学习之信号与槽函数断开:disconnect

    当信号与槽没有必要继续保持关联时,可以使用disconnect函数来断开连接. bool QObject::disconnect ( const QObject * sender, const cha ...

  7. QT学习笔记(4) 信号和槽

    一.代码编写 在上一次的学习中,我们把所有的控件布局和控制信息都放在主函数中,这样极其不方便开发和维护. 然后我们又发现在打开一个窗体时,其实最开始是先执行的构造函数.所以我们就想到可以把当前对象和子 ...

  8. QT学习笔记(七):定时器事件的3种常用使用方式

    QT学习笔记(七):定时器事件的2种常用使用方式 Qt中定时器的使用有2种方法:一种是使用QObject类提供的定时器通过重载 timerEvent 事件处理过程函数,一种就是使用QTimer类. 其 ...

  9. QT学习笔记(五):Qt5的8种标准对话框示例

    QT学习笔记(五):Qt5的8种标准对话框示例 前言 实例展示 1.颜色对话框 2.文件对话框 3.字体对话框 4.输入对话框 5.消息对框 6.进度对话框 7.错误信息对话框 8.向导对话框. 前言 ...

最新文章

  1. DM8168 OpenCV尝试与评估(编译ARM版OpenCV)
  2. Android踩坑日记:监听软键盘多次调用和刷新系统相册和获取所有相片
  3. mysql数据库char类型长度_mysql数据库设计字符类型及长度
  4. 武侠乂怎么修改服务器,武侠乂怎么操作 按键功能详细介绍
  5. 手把手教你数据不足时如何做深度学习NLP
  6. java修改请求url_spring cloud zuul修改请求url的方法
  7. Web后端学习笔记 Flask(9)cookie and session
  8. JQ实现 todolist案例(记事本)
  9. 基于单片机的打地鼠游戏仿真设计(#0040)
  10. springboot基于web的摩托车销售系统的设计与实现毕业设计源码031706
  11. 熊猫教你路由器和三层交换机的区别
  12. java 注解处理器的作用_Java注解处理器
  13. 网络变压器通频带、网络变压器插入损耗及矩形脉冲失真的关系
  14. POI中设置Excel单元格格式样式(居中,字体,边框,背景色、列宽、合并单元格等)
  15. Python编写键盘记录器
  16. 品优购商城——手机详情页(作业)
  17. 如何将中文地址翻译成英文
  18. 苹果自研处理器搭载全新MacBook 价格更亲民
  19. 系統封裝(6)--EZBOOT設置
  20. 2022年浙江省人民医院--互联网医院出线小报

热门文章

  1. 复杂多个合约部署验证方法
  2. 知识分享:如何用插件实现操作校验
  3. Elasticsearch 2.3.0 重建索引
  4. Bootstrap-学习系列
  5. android开发EditText输入时弹出数字输入键盘
  6. 7 大工具,驯服大数据
  7. H3C交换机配置命令
  8. 模型预测控制的缺点_【电子技术】【2018.01】模型预测控制FPGA实现的协同设计...
  9. dante pam mysql_FreeBSD下安装dante(sockd)并使用pam-pwdfile进行认证
  10. Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例