學習環境:Windows10 + QT5.13 + QT Creater4.9.1(2019-08-10 22:02:30) 1.基本工程創建操作 常規操作創建畫面,可選擇QDialog、MainWindow、QWidget三種類型。可選擇直接創建相應的 ui 文件,控制項的添加可以在編輯模式下使用代 ...
學習環境:Windows10 + QT5.13 + QT Creater4.9.1(2019-08-10 22:02:30)
1.基本工程創建操作
常規操作創建畫面,可選擇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 也可以視情況省略該操作)。
3.實際操作練習
新建兩個視窗(此處選擇了 MainWindow 和 Dialog),新建時選擇創建 ui 文件。在每個畫面添加兩個 QPushButton 控制項,主界面的按鈕實現跳轉至從界面和關閉,從界面按鈕實現一個彈出框和返回至主界面。在 mainwindow.h 中聲明一個 Dialog 類的實例:
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 :
1 public: 2 explicit Dialog(QWidget *parent = nullptr); 3 ~Dialog(); 4 5 signals: 6 void mysignal();
在子界面的 cpp文件,dialog.cpp 實現 signal 的發送,發送使用 emit 關鍵字:
1 void Dialog::on_back_clicked() 2 { 3 this->hide(); 4 emit mysignal(); 5 }
4.總結
從本次記錄主要瞭解 QT 的 signal 和 slot 形式與基本使用,學習兩個界面如果通過 signal 和 slot 聯繫在一起。
每使用一種控制項,需要把對應的類包含進去!!! eg. #include <QPushButton>//包含按鈕的類
/***************************************未完待續******************************************/