1. 程式人生 > >QT基礎(四)訊號和槽

QT基礎(四)訊號和槽

什麼是訊號和槽?訊號和槽的作用

訊號和槽都是函式,比如按下視窗上的一個按鈕後想要彈出一個對話方塊,那麼就可以將這個按鈕的單擊訊號和我們定義的槽關聯起來,在這個槽中可以建立一個對話方塊,並且顯示它。這樣,當單擊這個按鈕時就會發射訊號,進而執行我們的槽來顯示一個對話方塊

接下來用訊號和槽的機制建立一個專案。先看看該專案的作用:點選“顯示子視窗”會彈出小的視窗。 在這裡插入圖片描述在這裡插入圖片描述

專案編寫過程(自動關聯方式):

(1)接著上一個mywidget1專案寫。雙擊mywidget.ui檔案(執行結果)新增Label,編輯文字“我是主介面”。加Push Button,編輯“顯示子視窗”。注意:這裡將Push Button的objectName改為showChildButton。

(2)在mywidget.h檔案中MyWidget類宣告的最後新增槽的宣告:

public slots:
     void showChildDialog();

(3)在.cpp檔案中編輯showChildDialog()槽的實現:

void MyWidget::showChildDialog()
{
    QDialog *dialog = new QDialog(this);
    dialog ->show();
}

(4)修改MyWidget類的建構函式:

MyWidget::MyWidget(QWidget *parent) 
    : QWidget(parent),  //mywidget類的建構函式。
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);
    connect(ui->showChildButton,&QPushButton::clicked,
            this,&MyWidget::showChildDialog);
}

connect()函式將按鈕的單擊訊號clicked()與新建的槽關聯。 發射訊號的物件:showChildButton;發射的訊號:QPushButton 接收訊號的物件:MyWidget ;執行的槽 :showChildDialog。