QT中槽的使用

时间:2021-05-04 21:31:43

一、建立槽和按钮之间的连接

connect(信号发送者,发送的信号,信号接收者,信号接收者的槽函数)

1、例子

connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(showinfo()));
解释:
信号反发送者:pushButton(这是一个按钮),发送信号:clicked(点击按钮),信号接收者:this(本类),信号接收者的槽函数:showinfo(点击按钮后响应的函数)

二、槽函数的定义

(1)槽函数

protected slots:
       void showinfo();

(2)自定义带参数的槽函数

signals:
      void mysignal(); //自定义信号(不需要实现),发送信号emit mysignal()

槽函数应用例子:

1、在头文件中定义槽函数

 #ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow> namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow();
//槽函数声明
protected slots:
void showinfo();//槽函数
void myslot(); //自定义带参数的槽函数
signals:
void mysignal(); //自定义信号(不需要实现),发送信号emit mysignal()
void sendNum(int num); private slots:
void on_closbt_clicked();
void getNum(int num); private:
Ui::MainWindow *ui;
}; #endif // MAINWINDOW_H

2、在源文件中建立按钮与槽函数之间的连接

 #include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug.h>
#include <QtWidgets/QStackedLayout>
#include "form.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//把按钮的信号与本类的showinfo槽函数关联
connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(showinfo())); //把本类的信号mysignal与本类的槽函数myslot()关联
connect(this,SIGNAL(mysignal()),this,SLOT(myslot()));
connect(this,SIGNAL(sendNum(int)),this,SLOT((int)));
} MainWindow::~MainWindow()
{
delete ui;
} //实现槽函数
void MainWindow::showinfo()
{
qDebug()<<"信号与槽函数测试";
//发送信号
emit mysignal();
} void MainWindow::myslot()
{
qDebug()<<"自定义信号触发";
} void MainWindow::getNum(int num)
{
qDebug()<<num;
} void MainWindow::on_closbt_clicked()
{
emit sendNum();
}