一文帶你瞭解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);
}

到此這篇關於一文帶你瞭解Qt中槽的使用的文章就介紹到這瞭,更多相關Qt槽內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: