1. 程式人生 > >Qt認識信號與槽

Qt認識信號與槽

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認識信號與槽