學習環境:Windows10 + QT5.13 + QT Creater4.9.1(2019-08-10 22:02:30)設計模式
1.基本工程建立操做ide
常規操做建立畫面,可選擇QDialog、MainWindow、QWidget三種類型。可選擇直接建立相應的 ui 文件,控件的添加能夠在編輯模式下使用代碼建立,也能夠在設計模式下經過拖動添加;控件的屬性能夠在編輯模式下用代碼修改,也能夠在設計模式下經過屬性欄修改;每個控件經過其惟一的 objectName 尋找,因此要細心設置控件的objectName。函數
2.經常使用且重要的操做學習
QT 特有的信號(signal)和槽(slot):signal 關聯發出者,slot 關聯接收者,二者各有一個對應的函數操做;QT中已經自帶了一些 signal 和 slot 函數,用戶能夠直接使用;若是用戶自定義的signal信號,使用 emit 關鍵字發出信號;signal 和 slot 須要綁定起來才能實現正常的發送與接收,這種鏈接可使用代碼 connect 函數執行,也能夠在設計模式下的 Edit signal/slot 功能中經過連線方式綁定,最終實現 signal 和 slot 的代碼(若是是 QT 自帶的 signal 和 slot 也能夠視狀況省略該操做)。ui
3.實際操做練習this
新建兩個窗口(此處選擇了 MainWindow 和 Dialog),新建時選擇建立 ui 文件。在每一個畫面添加兩個 QPushButton 控件,主界面的按鈕實現跳轉至從界面和關閉,從界面按鈕實現一個彈出框和返回至主界面。在 mainwindow.h 中聲明一個 Dialog 類的實例:spa
1 private: 2 Ui::MainWindow *ui; 3 Dialog *sub;
在 mainwindow.cpp 中,從主界面的構造函數中建立子界面的實例,而且鏈接兩個畫面( signal 和 slot 的綁定),必定要先建立實例再綁定:設計
1 MainWindow::MainWindow(QWidget *parent) : 2 QMainWindow(parent), 3 ui(new Ui::MainWindow) 4 { 5 ui->setupUi(this); 6 sub = new Dialog(this); 7 connect(sub,SIGNAL(mysignal()),this,SLOT(re_show())); 8 }
在子界面 dialog.h 中聲明一個 signal :code
1 public: 2 explicit Dialog(QWidget *parent = nullptr); 3 ~Dialog(); 4 5 signals: 6 void mysignal();
在子界面的 cpp文件,dialog.cpp 實現 signal 的發送,發送使用 emit 關鍵字:blog
1 void Dialog::on_back_clicked() 2 { 3 this->hide(); 4 emit mysignal(); 5 }
4.總結
從本次記錄主要了解 QT 的 signal 和 slot 形式與基本使用,學習兩個界面若是經過 signal 和 slot 聯繫在一塊兒。
每使用一種控件,須要把對應的類包含進去!!! eg. #include <QPushButton>//包含按鈕的類
/***************************************未完待續******************************************/