C++/Qt 信号与槽

一、信号与槽的概念


        信号是在特定情况下被发射的通知;槽是对信号进行响应的函数,槽就是函数,所以也称为槽函数。

        信号与槽关联是用函数QObject::connect()实现的,使用函数connect()的基本格式如下:

QObject::connnect(sender,SIGNAL(signal()),receiver,SLOT(slot()));

        connect()是QObject类的一个基类,而QObject是大部分Qt类的基类,所以在实际调用时,可以忽略前面的限定符部分,所以可以直接写为:

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

        其中sender是发射信号的对象的名称,signal()是信号,信号可以看作是特殊的函数,需要带有括号,有参数时还需要指明各参数类型,receiver是接收信号的对象的名称,slot()是槽函数,需要带有括号,有参数时还需要指明各参数的类型。

        SIGNAL和SLOT是Qt的宏,分别用于指明信号和槽函数,并将它们的参数转换为相应的字符串。

        关于信号与槽的使用,有以下一些规则需要注意:

        (1)一个信号可以连接多个槽函数

                当一个信号与多个槽函数关联时,槽函数按照建立连接时的顺序依次运行;

                当信号与槽函数带有参数时,在函数connect()里要指明各参数的类型,但不用指明参数名称,例如有:

connect(spinNum,SIGNAL(valueChang(int)),this,SIOT(addFun(int)));
connect(spinNum,SIGNAL(valueChang(int)),this,SIOT(updateStatus(int)));

        (2)多个信号可以连接同一个槽函数

                例如有:

connect(ui->redioBlack,SIGNAL(clicked()),this,SIOT(addFun(int)));
connect(ui->redioRed,SIGNAL(clicked()),this,SIOT(addFun(int)));
connect(ui->redioBlue,SIGNAL(clicked()),this,SIOT(addFun(int)));

        (3)一个信号可以连接

相关推荐

  1. qt-信号

    2024-07-20 23:08:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 23:08:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 23:08:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 23:08:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 23:08:01       55 阅读

热门阅读

  1. CentOS Mysql8 数据库安装

    2024-07-20 23:08:01       16 阅读
  2. ubuntu22.04下YOLOv5 TensorRT模型部署

    2024-07-20 23:08:01       15 阅读
  3. 前端面试题日常练-day98 【Less】

    2024-07-20 23:08:01       16 阅读
  4. Uboot下的命令与环境变量

    2024-07-20 23:08:01       19 阅读
  5. 力扣第二十二题——括号生成

    2024-07-20 23:08:01       18 阅读