本節主要介紹ui文件如何與窗口關聯,并通過隱式連接方式顯示對話框
本文部分ppt、視頻截圖原鏈接:[萌馬工作室的個人空間-萌馬工作室個人主頁-嗶哩嗶哩視頻]
1 UI文件如何與窗口關聯
1.1 mainwindow.cpp的頭文件ui_mainwindow.h
根據編譯原理的基本規則,項目中的每個源文件必須包含其依賴的所有頭文件聲明才能成功編譯。在創建的帶有ui界面的項目文件中,mainwindow.cpp自動包含了名為ui_mainwindow.h的頭文件,該文件是由uic.exe將ui文件轉換而來的,最終在編譯目錄中生成ui_mainwindow.h,如下圖。
總結一下即在Qt框架中,當創建帶有UI界面的項目時,Qt的qmake或CMake構建系統會自動進行下面流程:
- 檢測項目中的.ui文件
- 調用uic.exe生成對應頭文件(例如:mainwindow.ui → ui_mainwindow.h)
- 將生成的頭文件目錄加入編譯器的頭文件搜索路徑
1.2 關聯方式
設計UI: 開發者使用Qt Designer設計UI,并保存為 .ui 文件。
生成代碼: 在項目構建過程中,uic 工具被調用,將 .ui 文件轉換為 ui_ObjectName.h 文件。這個轉換過程是自動化的,開發者不需要手動執行。
關聯UI和窗口: 在C++代碼中,通過包含 ui_ObjectName.h 文件,可以訪問 Ui_ObjectName 類。在窗口類的構造函數中,調用 setupUi 方法將UI元素與窗口關聯起來,從而實現UI的顯示和交互。
1.3 控件轉到槽實現信號與槽連接的原理
- ui_mainwindow.h文件中包含connectSlotsByName()函數的調用,該函數是轉到槽功能實現信號與槽連接的關鍵
- connectSlotsByName() 函數功能:
- Qt中信號與槽的連接方式有顯示連接和隱式連接兩種,轉到槽的這種方式屬于隱式連接
2 通過隱式連接制作對話框實例
2.1 創建隱式連接
- 添加一個按鈕pushButton_3,并通過“轉到槽”方式建立clicked信號和槽函數on_pushButton_3_clicked() 的連接
2.2 添加并顯示界面
- 點擊新建文件,選擇Qt-Qt 設計師界面類,添加一個對話框到本項目HelloWorld.pro
- 在mainwindow.h中引入剛剛創建的對話框的頭文件dialog.h,并添加該界面類的成員函數pDlg
- 在mainwindow.cpp中初始化對話框,并在pushButton_3關聯的槽函數中完成對話框顯示功能:用到函數exec()。函數功能及運行結果如下