2. Qt界面文件原理

本節主要介紹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()。函數功能及運行結果如下
    在這里插入圖片描述
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74900.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74900.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74900.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

雅思大作文寫作——詞伙、簡單句、并列句的使用

詞伙是一些可以表達我們常用觀點的單詞組合,這個組合可能不只是2-3個單詞,也可能是很多單詞組成的一個短句。 一、詞伙使用 1. 不要中譯英 2. 重視詞伙,而非單詞 如何替換表達 1. 如果要替換的是一個名詞,如students,則有下面的一些方法: A. 使用替換詞或者詞組:y…

?算法OJ?滑動窗口最大值【雙端隊列(deque)】Sliding Window Maximum

文章目錄 雙端隊列(deque)詳解基本特性常用操作1. 構造和初始化2. 元素訪問3. 修改操作4. 容量操作 性能特點時間復雜度:空間復雜度: 滑動窗口最大值題目描述方法思路解決代碼 雙端隊列(deque)詳解 雙端隊列(deque,全稱double-ended queue)是…

電機的了解到調試全方面講解

一、什么是電機 電機是一種將電能轉換為機械能的裝置,通常由定子、轉子和電磁場組成。 當電流通過電機的繞組時,產生的磁場會與電機中的磁場相互作用,從而使電機產生旋轉運動。電機廣泛應用于各種機械設備和工業生產中,是現代社會不可或缺的重要設備之一。 常見的電機種…

分布式微服務系統架構第97集:JVM底層原理

加群聯系作者vx:xiaoda0423 倉庫地址:https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ JVM 內存結構 Java 虛擬機的內存空間分為 5 個部分: 程序計數器 Java 虛擬機棧 本地方法棧 堆 方法區 JDK 1.8 同 JDK 1.7 比&…

制定大運維管理體系的標準、流程、機制、規范

規劃并制定大運維管理體系的標準、流程、機制、規范,對于確保平臺的可用性和穩定性至關重要。這一過程涉及從頂層設計到具體執行的全面考量,需要綜合考慮業務需求、技術架構、團隊能力等多方面因素。以下是一個基本框架,用于指導如何構建有效…

TruPlasma RF 3006 軟件TRUMPF HUETTINGER TRUPLASMA RF 3006 調試監控軟件

TruPlasma RF 3006 軟件TRUMPF HUETTINGER TRUPLASMA RF 3006 調試監控軟件

第16屆藍橋杯單片機模擬試題Ⅱ

試題 代碼 sys.h #ifndef __SYS_H__ #define __SYS_H__#include <STC15F2K60S2.H> //ds1302.c extern unsigned char time[3]; void w_ds1302(); void r_ds1302(); //iic.c float v_adc(unsigned char addr); //sys.c extern float light_v; extern float rb2_v; exte…

清華《數據挖掘算法與應用》FP-Growth算法

【例 8.7】實現FP 樹算法,并對模擬數據集 simpDat挖掘頻繁項集,最小支持度為2,繪制 FP樹并輸出頻繁項集。 運行結果&#xff1a; 聲明&#xff1a;著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。 # -*- coding: utf-8 -*- ""&q…

npm 項目命名規則

以下是 npm 項目命名規則的詳細說明&#xff1a; 一、核心命名規則 必須使用小寫字母 名稱中不能包含大寫字母。原因&#xff1a; 跨平臺兼容性&#xff08;如 Linux 區分大小寫&#xff0c;而 Windows 不區分&#xff09;。避免命令行和 URL 中的大小寫沖突&#xff08;例如包…

Ubertool 的詳細介紹、安裝指南及使用說明

Ubertool&#xff1a;多協議網絡分析與調試平臺 一、Ubertool 簡介 Ubertool 是一款開源的 多協議網絡分析工具&#xff0c;專為物聯網&#xff08;IoT&#xff09;、嵌入式系統和工業自動化領域設計。它支持藍牙、Wi-Fi、LoRa、CAN總線等多種通信協議的實時監控、數據包捕獲…

AI重構農業:從“面朝黃土“到“數字原野“的產業躍遷—讀中共中央 國務院印發《加快建設農業強國規劃(2024-2035年)》

在東北黑土地的萬畝良田上&#xff0c;無人機編隊正在執行精準施肥作業&#xff1b;在山東壽光的智慧大棚里&#xff0c;傳感器網絡實時調控著番茄生長的微環境&#xff1b;在云南的咖啡種植園中&#xff0c;區塊鏈溯源系統記錄著每粒咖啡豆的旅程。這場靜默的農業革命&#xf…

FogFL: Fog-Assisted Federated Learning for Resource-Constrained IoT Devices

摘要 提示&#xff1a;這里可以添加系列文章的所有文章的目錄&#xff0c;目錄需要自己手動添加 -在本文中&#xff0c;我們提出了一個支持霧的聯邦學習框架–FogFL–來促進資源受限的物聯網環境中延遲敏感應用的分布式學習。聯邦學習&#xff08;FL&#xff09;是一種流行的分…

linux下編譯Websocketpp,適用x86和armv8

編譯boost庫 下載源文件&#xff1a;Version 1.79.0 編譯&#xff1a; sudo ./bootstrap.sh sudo ./b2 install 安裝websocketpp git clone https://github.com/zaphoyd/websocketpp.git cd websocketpp #進入目錄 mkdir build cd build cmake .. make sudo make ins…

Linux學習筆記——零基礎詳解:什么是Bootloader?U-Boot啟動流程全解析!

零基礎詳解&#xff1a;什么是Bootloader&#xff1f;U-Boot啟動流程全解析&#xff01; 一、什么是Bootloader&#xff1f;&#x1f4cc; 舉個例子&#xff1a; 二、U-Boot 是什么&#xff1f;三、U-Boot啟動過程&#xff1a;分為兩個階段&#x1f539; 第一階段&#xff08;匯…

Word 頁眉設置(不同章節不同頁眉)

需求分析 要給文檔設置頁眉&#xff0c;但是要不同的頁眉不同的頁眉 問題點&#xff1a;一旦設置頁眉 每個頁眉都是一樣的 現在要設置不一樣的 設置了頁眉但是整個文章的頁眉都一樣 問題解決 取消鏈接 前一節&#xff08;不和前面的頁眉同步更新&#xff09; 小結 不同的…

Debezium日常分享系列之:Debezium3.1版本之增量快照

Debezium日常分享系列之&#xff1a;Debezium3.1版本之增量快照 按需快照觸發一次臨時增量快照觸發臨時阻塞快照增量快照增量快照過程如何 Debezium 解決具有相同主鍵的記錄之間的沖突快照窗口觸發增量快照使用附加條件運行臨時增量快照使用 Kafka 信號通道觸發增量快照臨時增量…

音視頻開發從入門到精通:編解碼、流媒體協議與FFmpeg實戰指南

音視頻開發從入門到精通&#xff1a;編解碼、流媒體協議與FFmpeg實戰指南 音視頻技術作為數字媒體領域的核心&#xff0c;正在成為互聯網和移動應用的重要組成部分。本文將全面介紹音視頻開發的學習路徑&#xff0c;從基礎概念到高級應用&#xff0c;從編解碼原理到實戰案例&a…

bookkeeper基本概念

Apache BookKeeper 架構與基本概念 Apache BookKeeper 的架構 Apache BookKeeper 是一個高性能的分布式日志存儲系統&#xff0c;主要用于存儲和管理順序寫入的數據。它被設計用來提供低延遲、高吞吐量和強一致性的服務&#xff0c;常用于分布式系統中的日志存儲需求&#xf…

Scala相關知識學習總結3

包 - 包聲明&#xff1a;和Java類似&#xff0c;作用是區分同名類、管理類命名空間。Scala包名只能含數字、字母等&#xff0c;不能數字開頭、不能用關鍵字。 - 包說明&#xff1a;有類似Java的包管理風格&#xff0c;也有獨特嵌套風格。嵌套風格有兩個特點&#xff0c;一是&…

在Spring Boot中實現圖片上傳和修改

1. 圖片上傳實現步驟 1.1 添加依賴 確保 spring-boot-starter-web 和 spring-boot-starter-validation 已存在&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> <…