Qt認識信號與槽
阿新 • • 發佈:2019-02-03
http main.c 機制 con 提示 聽說 itl tao ESS
一、概述
信號與槽機制是Qt的編程很常見用到的一種機制,他可以讓應用程序的一個控件(比如:一個按鈕)和對應的時間綁定在一起實現相應的功能
二、信號
什麽是信號,比如我拿一根針紮我自己,這個時候神經就會發送一種電信號讓我感到疼痛,在我點擊一個按鈕的時候,他需要發出一種信號,來告訴對應的控件,我要怎麽怎麽樣的,你要幹什麽,
其實這個我們還可以理解成,在中國有一個故事是烽火戲諸侯想必大家都聽說過吧,就是說我這裏點了狼煙,我的諸侯國看到了就要派兵過來,我們這裏可以理解成,我點狼煙的時候就是發送的一個信號,諸侯國看到了,他就要執行響應的動作了
三、槽
上面我們舉得例子烽火戲諸侯,我們可以把諸侯國看做是一個槽信號,諸侯國看到了信號,他就要出發槽
槽就是普通的C++函數,唯一的特點是可以和信號連接
四、代碼舉例
我們來實現一個功能,就是一個很簡單的功能,點擊按鈕彈出一個對話框
聲明槽
實現槽
連接信號和槽
static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member);
參數一:誰發送的信號
參數二:發送的信號
參數三:誰接受的信號
參數四:槽
全部代碼:
main.cpp
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.setWindowTitle("此教程是信號與槽"); w.show(); return a.exec(); }
mainwindows.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this);//連接槽 QObject::connect(ui->click,SIGNAL(clicked()),this,SLOT(ShowDiolgWin())); } MainWindow::~MainWindow() { delete ui; }
//實現槽 void MainWindow::ShowDiolgWin() { QMessageBox::information(this, "提示","這個是彈出的對話框",QMessageBox::Yes); }
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QMessageBox> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui;
//聲明槽 private slots: void ShowDiolgWin(); }; #endif // MAINWINDOW_H
Qt認識信號與槽