关于QT信号与槽的问题其实每个初学QT的人都会遇到,当时我需要做一个带界面的demo,在信号和槽的问题上,我需要的想法是让槽可以有参数的进行操作,但是系统内置的clicked()信号是不含参数的,这对当时根本没接触过QT的我来说就很没头绪,无奈之下只好选择了使用全局变量这个下下策,还好我的demo代码量呀不是很大。我当时是借了一本QT CREATOR快速入门,虽说是好书,但是也很难静得下心来看,于是选择在网上翻阅资料将信号与槽这一部分内容给初步整理了下,得出自己的见解。
QT的作用是做出一个可视化的交互见面,这一点跟中学学的VB很像,当然两者的能力就天差地别了。在QT中,通过控件来实现需求。这里我用最简单的按钮QPushButton和输入框QLineEdit作演示,希望这篇博客能让你对信号和槽有个印象。
为了尽量简洁的说明信号问题,在创建QT项目时选择基类为Widget,不勾选界面。
首先,在QT帮助文档里是有内置的SIGNAL和SLOT的,在SIGNAL中有一个clicked信号,默认参数bool。这里我们需要新建一个按钮,同时定义一个槽函数(槽函数即接收到信号时所做出的行为)。

     QPushButton *b2=new QPushButton(this);b2->move(50,50);b2->setText("Send Signal");edit=new QLineEdit(this);edit->setText("Ready to recv");//edit定义在类中,之后要用到connect(b2,&QPushButton::clicked,this,&Signal::MySlot);

因为需要用到类QPushbutton,故需包含相应的头文件,这边着重讲解connect函数。
connect函数用于将信号的发出者和信号的处理者联系起来,第一第三个参数分别为发出者和接收者,注意为指针类型,this为对象的指针,这一点和C++语法一样。第二参数为信号,第四参数为槽函数,均可自定义。这里clicked为系统内置信号,在b2接收到clicked(鼠标点击信号)后,对象(此处为主窗口)作出MySlot反应,MySlot为我定义的一个槽函数。也就是说,此时我按下b2按钮,窗口会运行MySlot函数。
在理解以上内容的基础上,下面将介绍重点,即自定义信号,编写带函数参数的槽函数:

signals:void mySignal(QLineEdit*,int );
private slots:void MySlot();void MyDel(QLineEdit *edit,int x);

上述为在头文件中,注意在定义信号时要在前面加上signals ,且信号和槽的返回值均为void,此时我定义了一个信号,它将传递一个QLineEdit*型参数和一个int型参数

void Signal::MySlot()
{emit mySignal(edit,5);
}
void Signal::MyDel(QLineEdit *edit,int x)
{edit->setText("The Num is "+QString::number(x));
}

自定义槽函数MySlot(),此槽函数仅仅用于发送之前定义的带参数的信号mySignal(),之前此槽函数与按钮b2的clicked信号已经connect过,故点击b2,将发送信号mySignal(edit,5);

     connect(this,&Signal::mySignal,this,&Signal::MyDel);
  • 1

connet 此自定义的信号和槽函数MyDel(QLineEdit *edit,int x),接受到此信号是,操作MyDel,用于给edit设置文本属性。
下面附上效果图

QT信号与槽(自定义带参数的信号)相关推荐

  1. 【Qt教程】1.7 - Qt5带参数的信号、信号重载、带参数的槽函数、槽函数重载

    原理:与C++语法一致,信号.槽函数都可以发生重载,使其在名称不变的情况下,传递过程可以携带参数. 示例说明:我们从一个最普通的信号槽工程中,来修改,对信号.槽进行重载,使信号.槽携带参数. 1. 普 ...

  2. 自定义带参数二维码扫码进入微信小程序获取参数

    第一步,需要进入小程序后台,开发设置里,添加二维码规则 第二步,添加好扫码进入的规则,比如扫码进去小程序的指定页面! (1)协议类型选择https (2)选择小写 (3)二维码规则,这个看文档有些人估 ...

  3. Qt工作笔记-对信号与槽的进一步理解(信号与信号关联)

    运行截图如下: 关键代码如下: connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(btnClicked()));connect(thi ...

  4. 【Qt】Qt中信号与槽

    00. 目录 文章目录 00. 目录 01. 信号与槽 02. 介绍 03. 信号与槽 04. 信号 05. 槽 06. 一个小例子 07. 一个真实的例子 08. 信号和槽使用默认参数 09. 信号 ...

  5. 【QT编程】QT对象间通讯——信号与槽

    01.目录 文章目录 01.目录 02.信号与槽介绍 03.信号与槽机制 04.信号(Signal) 05.槽函数(Slot) 06.一个示例 07.一个真实的示例 08.信号和槽使用默认参数 09. ...

  6. Qt——P11 自定义的信号和槽发生重载的解决

    student.h #ifndef TEACHER_H #define TEACHER_H#include <QObject>class Teacher : public QObject ...

  7. 【Qt教程】1.6 - Qt5信号与槽、Single Slot emit、自定义信号、自定义槽

    信号与槽 1. 说明 概念:信号和槽,是Qt对象间通信的接口.信号Signal.槽Slot,分别对应着事件的发送端和接受端. 语法: connect( 信号的发送者, 发送的具体信号, 信号的接收者, ...

  8. Qt信号槽如何传递参数

    Qt信号槽如何传递参数 利用Qt进行程序开发时,有时需要信号-槽来完成参数传递.带参数的信号-槽在使用时,有几点需要注意的地方,下面结合实例进行介绍. 1. 当信号与槽函数的参数数量相同时,它们参数类 ...

  9. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.6 自定义信号槽

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1gA4y1d7gz 上节课,我们讲解了标准信号槽,标准信号槽中,信号和槽函数,都是 Qt 框架定 ...

最新文章

  1. Spring Boot中自带的这些工具类,你用过几个?
  2. FPGA:下一代机器人感知处理器
  3. 一起学nRF51xx 23 -  s130蓝牙API介绍
  4. String是一个很普通的类 - Java那些事儿
  5. B03_NumPy创建数组(numpy.empty,numpy.zeros,numpy.ones)
  6. PHP在程序处理过程中动态输出内容
  7. Linux 下 NFS服务的搭建
  8. 95-235-070-源码-task-OneInputStreamTask
  9. [07] 使用注解完成IOC配置
  10. 可变、不可变数据类型
  11. matlab figure 调整大小、字体、线宽
  12. 深入了解Java ClassLoader、Bytecode 、ASM、cglib (I)
  13. 康耐视智能相机更新固件版本方式
  14. windows 7系统中单独添加北京时区办法
  15. 黄家驹的《光辉岁月》永远流传,但IT人的光辉岁月已渐远去
  16. python控制qq添加好友_QQ增粉秘籍:QQ添加好友被限制 突破规则日增粉1000+
  17. 微PE安装系统 不显示U盘中镜像文件 的解决方法
  18. 变分(Calculus of variations)的概念及运算规则(一)
  19. 智能家居服务发现实现
  20. EBS查询某公司某科目的科目余额明细SQL

热门文章

  1. typora居中_Windows系统下Typora的安装和语法
  2. 服务器数据库端口修改方法,如何修改云服务器数据库端口
  3. 嵌入式linux开发环境 cpu,嵌入式Linux开发环境的搭建之:U-Boot移植-嵌入式系统-与非网...
  4. php科学计算库,科学计算库numpy基础
  5. 收集bug开源框架_划重点 | 小程序框架全面测评
  6. 与华为交换机用access_学校机房项目交换机的配置,理解这篇,交换机配置不再难...
  7. 计算机网络网关作用,默认网关的作用
  8. python初始化方法对应的变量是全局变量嘛_在Python中初始化全局变量的正确方法...
  9. python曲线拟合_python如何实现数据的线性拟合
  10. 全国一等奖,F题:智能送药小车。