作用
用于组件和组件之间,组件和窗口之间进行通信
信号:本质上是个函数(很特殊,只有声明,没有定义,没有源码), 所有的组件QT都已经定义好了对应的信号
如何查看某个类(组件)有哪些信号
方法一:右键点击组件,转到槽即可看到该组件的所有信号
方法二:打开QT助手,搜索类,查看到所有的信号声明和介绍
槽函数 : 就是个普通函数,当信号产生的时候,槽函数会被自动调用执行相应的任务
生成槽函数
右键转到槽函数
QT工程自动生成了如下代码:
//声明一个私有的槽函数 slots槽函数的声明 private slots: void on_pushButton_clicked();
void MainWindow::on_pushButton_clicked() //槽函数的定义 { }
关联信号与槽函数
方法一:借助集成开发环境QT creator自动关联--》右键转到槽函数
方法二:程序员自己写代码关联信号与槽函数
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method) 参数: sender --》信号的发送者 signal --》发送什么信号 receiver --》信号的接收者 method --》要调用执行的槽函数 比如:connect(ui->bt2,SIGNAL(clicked()),this,SLOT(fun())); // 目前官方推荐的写法优点在实际编程中不用考虑参数类型,注意:当前类名为对应函数的类 connect(ui->bt2,&当前类名::clicked,this,&当前类名::fun);
信号与槽的特点
- 一个类如果要使用信号与槽,必须在这个类的定义中加上Q_OBJECT这个宏定义
- 同一个信号可以关联多个不同的槽函数(此时多个槽函数都会被调用,槽函数的调用顺序是依照你关联的先后顺序依次调用)
- 同一个槽函数可以被不同的信号关联
- 信号如果带参数,槽函数可以带参数,也可以不带
void cursorPositionChanged(int oldPos, int newPos) //这个信号带有两个int类型的参数 void editingFinished() //这个信号不带任何参数
标签:clicked,函数,--,void,信号,组件 From: https://www.cnblogs.com/baisedeyu/p/17843518.html