C++客户端Qt开发——信号和槽

三、信号和槽

1.信号和槽概述

在Qt中,用户和控件的每次交互过程称为一个事件。比如"用户点击按钮”是一个事件,"用户关闭窗口”也是一个事件。每个事件都会发出一个信号,例如用户点击按钮会发出"按钮被点击"的信号,用户关闭窗口会发出"窗口被关闭"的信号。

Qt中的所有控件都具有接收信号的能力一个控件还可以接收多个不同的信号。对于接收到的每个信号,控件都会做出相应的响应动作。例如,按钮所在的窗口接收到"按钮被点击"的信号后,会做出"关闭自己”的响应动作;再比如输入框自己接收到"输入框被点击"的信号后,会做出"显示闪烁的光标,等待用户输入数据”的响应动作。在Qt中,对信号做出的响应动作就称之为槽

信号和槽是Qt特有的消息传输机制,它能将相互独立的控件关联起来。比如,"按钮"和"窗口"”本身是两个独立的控件,点击"按钮”并不会对"窗口"造成任何影响。通过信号和槽机制,可以将"按钮"和"窗口"关联起来,实现"点击按钮会使窗口关闭"的效果。

Qt中,谈到信号,也是涉及到三个要素

  • 信号源:由哪个控件发出的信号,
  • 信号的类型:用户进行不同的操作,就可能触发不同的信号
  • 信号的处理方式:槽(slot)=>函数,Qt中可以使用connect这样的函数,把一个信号和一个槽关联起来,后续只要信号触发了,Qt就会自动的执行槽函数

槽本质是回调函数

2.connect函数

connect函数是QObject提供的静态的成员函数

connect函数原型(旧版本)

connect(const QObject *sender, //描述了哪个控件发出了信号
        const char * signal, //信号的类型
        const QObject * receiver, //信号处理:哪个对象处理
        const char * method, //信号处理:怎么进行处理
        Qt:ConnectionType type = Qt:AutoConnection) //暂时不考虑,很少使用,有默认值

示例:

ui->setupUi(this);
    QPushButton* button = new QPushButton(this);
    button->s

你可能感兴趣的:(qt,c++,qt,开发语言)