QT中槽的使用
阿新 • • 發佈:2017-11-11
back 測試 oid als debug cte you explicit get
void mysignal(); //自定義信號(不需要實現),發送信號emit mysignal()
一、建立槽和按鈕之間的連接
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、在頭文件中定義槽函數
1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include <QMainWindow> 5 6 namespace Ui { 7 class MainWindow; 8 } 9 10 class MainWindow : public QMainWindow 11 { 12 Q_OBJECT 13 14 public: 15 explicitMainWindow(QWidget *parent = 0); 16 ~MainWindow(); 17 //槽函數聲明 18 protected slots: 19 void showinfo();//槽函數 20 void myslot(); 21 22 //自定義帶參數的槽函數 23 signals: 24 void mysignal(); //自定義信號(不需要實現),發送信號emit mysignal() 25 void sendNum(int num); 26 27 private slots: 28 void on_closbt_clicked();29 void getNum(int num); 30 31 private: 32 Ui::MainWindow *ui; 33 }; 34 35 #endif // MAINWINDOW_H
2、在源文件中建立按鈕與槽函數之間的連接
1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 #include <QDebug.h> 4 #include <QtWidgets/QStackedLayout> 5 #include "form.h" 6 7 MainWindow::MainWindow(QWidget *parent) : 8 QMainWindow(parent), 9 ui(new Ui::MainWindow) 10 { 11 ui->setupUi(this); 12 //把按鈕的信號與本類的showinfo槽函數關聯 13 connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(showinfo())); 14 15 //把本類的信號mysignal與本類的槽函數myslot()關聯 16 connect(this,SIGNAL(mysignal()),this,SLOT(myslot())); 17 connect(this,SIGNAL(sendNum(int)),this,SLOT((int))); 18 } 19 20 MainWindow::~MainWindow() 21 { 22 delete ui; 23 } 24 25 //實現槽函數 26 void MainWindow::showinfo() 27 { 28 qDebug()<<"信號與槽函數測試"; 29 //發送信號 30 emit mysignal(); 31 } 32 33 void MainWindow::myslot() 34 { 35 qDebug()<<"自定義信號觸發"; 36 } 37 38 void MainWindow::getNum(int num) 39 { 40 qDebug()<<num; 41 } 42 43 44 void MainWindow::on_closbt_clicked() 45 { 46 emit sendNum(123); 47 }
QT中槽的使用