这篇文章主要讲解了“Qt的槽如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Qt的槽如何使用”吧!
一、建立槽和按钮之间的连接
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 = 0);
    ~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(123);
}