1. 程式人生 > >QT中槽的使用

QT中槽的使用

back 測試 oid als debug cte you explicit get

一、建立槽和按鈕之間的連接

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     explicit
MainWindow(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中槽的使用