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:clicked(信號爲clicked該按鈕)
接收信號的對象:MyWidget ;執行的槽 :showChildDialog。

自動關聯方式:

手動關聯方式關鍵在於:connect()函數將信號和槽按一定格式關聯起來。
自動關聯方式關鍵在於:將槽按一定格式重新命名。例如:on_showChildButton_clicked(),由字符on、發射信號的部件名showChildButton、信號名clicked()組成。

實現過程:
(1)刪除connect()函數。
(2)按下圖方式,然後重新命名在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章