qt中如何定義槽?connect(信号發送者,發送的信号,信号接收者,信号接收者的槽函數),今天小編就來聊一聊關于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()
【領更多Qt學習資料,點擊下方鍊接免費領取↓↓,先碼住不迷路~】
點擊→Qt開發進階技術棧學習路線和資料
槽函數應用例子:
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);
}
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!