【AI時代速通QT】第一節:C++ Qt 簡介與環境安裝

目錄

前言

一、為什么是 Qt?—— C++ 開發者的必備技能

二、Qt 的核心魅力:不止于跨平臺

2.1 優雅之一:代碼隔離,清晰明了

2.2 優雅之二:信號與槽(Signal & Slot)機制

2.3 優雅之三:QSS,像寫網頁一樣美化你的應用

三、環境搭建實戰:一步步搞定 Qt 安裝

3.1 第一步:獲取安裝包

3.2 第二步:選擇正確的版本

3.3 第三步:Windows 下的安裝詳解

3.4 第四步:(可選)為 Visual Studio 安裝 Qt 插件

總結


?🎬 攻城獅7號:個人主頁

🔥 個人專欄:C++QT跨平臺界面編程

?? 君子慎獨!

?🌈 大家好,歡迎來訪我的博客!
?? 此篇文章主要介紹 QT和windows下安裝
📚 本期文章收錄在《C++QT跨平臺界面編程》,大家有興趣可以自行查看!
?? 歡迎各位 ?? 點贊 👍 收藏 ?留言 📝!

前言

????????對于許多學習 C++ 的開發者來說,常常會陷入一個困惑:學了那么多語法和算法,似乎只能在黑漆漆的命令行窗口里打印"Hello, World"。當想要給自己的程序做一個真正的、有模有樣的圖形界面(GUI)時,卻發現無從下手。

????????如果你也有這樣的困惑,那么 Qt 框架或許就是你正在尋找的答案。

????????這篇文章將為你系統地介紹 Qt,我們將用最直白的方式,聊聊以下三個問題:

????????(1)為什么 C++ 開發者,尤其是初學者,應該學習 Qt?

????????(2)Qt 真正的魅力是什么?它比其他工具好在哪?

????????(3)如何一步步地、正確地搭建好 Qt 的開發環境?

????????在AI技術迅猛發展的當下,編程領域正經歷著前所未有的變革。然而面對AI編程的威脅,許多人產生一種錯覺,即程序員好像并不需要像以往那樣精通代碼細節,借助AI工具,即便代碼基礎薄弱,也能完成編程任務。但事實上,AI編程并非是對程序員專業能力的替代,而是輔助工具。有AI的加持,我們若能稍微了解QT開發的原理,就能在實際開發過程中更加得心應手,實現效率翻倍。QT作為跨平臺C++圖形用戶界面應用程序開發框架,廣泛應用于桌面應用、移動應用、嵌入式系統等多個領域。了解其信號與槽機制、事件驅動模型、布局管理原理等核心內容,能讓我們更好地理解代碼邏輯,與AI編程工具形成高效配合。所以現在我們無需深入鉆研QT的每一個細枝末節,只需速通QT核心知識點,快速掌握其開發的關鍵要素,就能借助AI實現高效開發,在變化的技術浪潮中站穩腳跟。

一、為什么是 Qt?—— C++ 開發者的必備技能

????????你可能聽說過很多 GUI 框架,比如古老的 MFC、Windows 平臺的 C#/.NET 等。那我們為什么要把 Qt 拎出來,稱之為 C++ 開發者的"必學技能"呢?

????????首先,因為它是真正的跨平臺。

????????想象一個場景:你用盡心血開發了一款桌面應用,但它只能在 Windows 上運行。你的 Mac 用戶和 Linux 用戶想用,怎么辦?答案是要么放棄他們,要么為這兩個平臺再各自重新開發一遍,成本高到難以想象。

????????而 Qt 的核心價值就在于"一次編寫,到處編譯"。你用 Qt 寫的代碼,幾乎不用修改,就能在 Windows、macOS 和 Linux 三大主流桌面操作系統上運行。許多你耳熟能詳的專業軟件,比如 3D 建模軟件 Maya、視頻剪輯軟件、工業控制軟件,甚至是 WPS Office,背后都有 Qt 的身影。它們之所以能覆蓋所有平臺,Qt 功不可沒。

????????其次,它能讓你做出"看得見"的東西,帶來巨大的成就感。

????????對于初學者來說,能親手做出一個可以點擊、可以交互的界面,這種正反饋遠比在命令行里解決一道算法題要來得強烈。它能讓你將學到的 C++ 知識真正"用起來",做出有實際用途的工具,這是保持學習熱情和動力的關鍵。

????????最后,它擁有強大的社區和商業前景。

????????Qt 已經發展了近30年,擁有一個極其龐大和活躍的社區。這意味著你遇到的絕大多數問題,都能通過搜索找到答案。同時,掌握 Qt 開發也是一項非常有競爭力的職業技能,無論是在桌面應用、嵌入式設備還是車載系統領域,都有大量的崗位需求。

????????總而言之,學習 Qt 不僅能讓你 C++ 的知識體系變得完整,更能讓你具備開發商業級跨平臺應用的能力。

????????下面來看一個簡單的C++ QT程序代碼示例,不懂的不用急,后面都會慢慢給你一一講解:

#include <QApplication>    // Qt應用程序的核心類,處理應用程序的初始化和事件循環
#include <QPushButton>     // 按鈕控件類,用于創建可點擊的按鈕
#include <QMessageBox>     // 消息框類,用于顯示提示信息對話框int main(int argc, char *argv[]) {// 創建Qt應用程序對象,處理命令行參數并初始化應用程序環境QApplication app(argc, argv);// 創建一個按鈕控件,顯示文本"Click me",父窗口設為nullptr表示頂級窗口QPushButton button("Click me", nullptr);// 連接按鈕的clicked信號到一個lambda表達式槽函數// 當按鈕被點擊時,執行lambda函數中的代碼QObject::connect(&button, &QPushButton::clicked, [&]() {// 顯示一個信息類型的消息框,標題為"Message",內容為"Hello, Qt!"QMessageBox::information(nullptr, "Message", "Hello, Qt!");});// 顯示按鈕控件(默認創建時是隱藏狀態)button.show();// 進入應用程序的主事件循環,等待用戶操作(如點擊按鈕)// 當調用app.quit()或窗口關閉時,循環結束,返回退出碼return app.exec();
}

二、Qt 的核心魅力:不止于跨平臺

????????如果僅僅是跨平臺,市面上也有其他選擇。Qt 之所以能長盛不衰,更在于它優雅的設計哲學。

2.1 優雅之一:代碼隔離,清晰明了

????????用過早期 MFC 框架的開發者都有一種痛苦的經歷:界面設計器自動生成的代碼,和你自己手寫的業務邏輯代碼,全部混雜在一個文件里。這就像一個糟糕的廚房,食材、廚具、垃圾堆在一起,稍不留神改錯一處,整個項目可能就崩潰了。

????????Qt 從設計之初就解決了這個問題。它將界面(UI)和邏輯(Logic)徹底分離。你通過拖拽控件設計出的界面,會自動生成一個獨立的 UI 文件;而你為按鈕點擊、數據處理等編寫的邏輯代碼,則在另一個 C++ 文件里。兩者互不干擾,結構清晰,維護起來非常輕松。

2.2 優雅之二:信號與槽(Signal & Slot)機制

????????這是 Qt 的靈魂,也是它最核心的設計模式。

????????你不用深究其底層原理,只需要理解這個絕妙的比喻:

????????(1)信號(Signal):就像一個"求救信號"。比如,一個按鈕被點擊時,它就會對外發出一個"我被點擊了!"的信號。

????????(2)槽(Slot):就像一個"處理方案"。你可以編寫一個函數,比如 `handleButtonClick()`,這個函數就是用來處理某個具體任務的槽。

????????(3)信號與槽機制,就是用一根"線",把"求救信號"和"處理方案"連接起來。你可以把按鈕的"被點擊"信號,連接到你的 `handleButtonClick()` 槽函數上。這樣,每當按鈕被點擊,這個函數就會自動被調用。

????????這種機制的好處是,發信號的對象(按鈕)根本不需要知道是誰在處理它的信號,處理信號的函數也不知道信號從哪里來。它們之間高度解耦,就像可以隨意插拔的積木,讓你的代碼極其靈活,易于擴展和維護。

2.3 優雅之三:QSS,像寫網頁一樣美化你的應用

????????傳統的桌面應用開發,要美化一個界面是件苦差事。想給按鈕換個顏色、改個圓角,可能需要寫一大堆復雜的代碼。

????????而 Qt 引入了 QSS(Qt Style Sheets),它是一套和網頁開發中的 CSS 語法幾乎完全一樣的樣式語言。

????????這意味著什么?

????????想讓鼠標懸浮在按鈕上時變色?只需要寫一行 QSS 規則:

QPushButton:hover { background-color: lightblue; }

????????想讓應用里所有的輸入框都有一個統一的邊框樣式?也只需要寫一條針對 `QLineEdit` 的全局規則。

????????你可以將所有的樣式規則寫在一個單獨的 `.qss` 文件里,實現樣式和邏輯的徹底分離。這讓開發漂亮的、個性化的界面變得前所未有的簡單和高效。

三、環境搭建實戰:一步步搞定 Qt 安裝

????????理論說完了,我們來點實際的。正確地安裝 Qt 是成功的第一步。現在下面示例windows平臺下的QT安裝,其他系統平臺安裝流程基本大同小異。

3.1 第一步:獲取安裝包

????????你有兩個主要渠道:

(1)官方網站:訪問 `qt.io`。通常需要注冊一個賬號才能下載,步驟略微繁瑣。

(2)官方歸檔目錄(推薦):直接在瀏覽器訪問 `download.qt.io/archive/qt/`。這是一個"寶藏"目錄,包含了 Qt 所有的歷史版本,無需注冊,直接下載,非常方便。

(3)別人提供的網盤下載

????????https://pan.baidu.com/share/link?shareid=2870187048&uk=56027321
????????密碼:kgjv

3.2 第二步:選擇正確的版本

????????在歸檔目錄里,你會看到很多版本號。對于初學者,建議選擇一個長期支持(LTS - Long-Term Support)版本,比如 `5.15.x` 或 `6.5.x` 等。LTS 版本意味著官方會對其進行長期的維護和 Bug 修復,更穩定,適合用于學習和生產。

3.3 第三步:Windows 下的安裝詳解

????????我們以 Windows 平臺為例,講解安裝過程中最關鍵的組件選擇環節。下面主要以5.9版本的QT安裝為例:

????????直接雙擊安裝程序,下面是安裝順序截圖,

????????運行你下載好的安裝程序,在登錄或下一步及跳過之后,你會來到一個組件選擇界面。這里是最多人會犯錯的地方,請務必仔細看:?

?(1)選擇編譯器(Toolchains)

????????MinGW:這是一個適用于 Windows 的開源 GCC 編譯器套件。選擇它,你的 Qt 項目就不再需要依賴 Visual Studio。它是一個自包含的、完整的開發環境。

????????MSVC:這是微軟的 Visual Studio 編譯器。如果你想在強大的 Visual Studio IDE 里開發 Qt 程序,就必須選擇這個選項。注意:選擇 MSVC 版本前,你的電腦上必須已經安裝了對應版本的 Visual Studio。

????????給初學者的建議:如果你是純新手,不想折騰環境,直接選擇最新的 MinGW 64-bit 版本即可。如果你是經驗豐富的 VS 用戶,可以選擇對應的 MSVC 版本。

(2)選擇 Qt 庫和源碼

????????在剛才選定的編譯器(比如 MinGW)條目下,勾選 "Qt 5.15.x" 或 "Qt 6.5.x"這樣的核心庫。

????????強烈建議同時勾選 "Sources"(源碼)。雖然它會占用一些硬盤空間,但在以后你想調試進 Qt 內部,學習其實現原理時,它會變得至關重要。

(3)選擇開發工具

????????Qt Creator:這是 Qt 官方的集成開發環境(IDE),默認是必選的。

????????Debugging Tools for Windows:如果你選擇了 MSVC 編譯器,請務必在"Developer and Designer Tools"下勾選這個調試工具,否則之后在 Qt Creator 中可能無法進行斷點調試。

????????選好以上組件后,就可以一路"下一步"完成安裝了。

3.4 第四步:(可選)為 Visual Studio 安裝 Qt 插件

????????如果你選擇了 MSVC 編譯器,并希望在 VS 里開發,那么還需要安裝一個插件,讓你可以在 VS 中直接創建和管理 Qt 項目。

????????直接在 VS 的"擴展"菜單中,搜索并安裝 "Qt VS Tools"即可。或者訪問下面網站下載插件進行安裝。

總結

????????現在,你應該對 Qt 有了一個清晰的認識。它不僅僅是一個能畫界面的工具,更是一個設計優雅、功能強大、生態成熟的 C++ 應用程序框架。它能將你的 C++ 技能轉化為看得見、摸得著的實際產品,是連接理論與實踐的最佳橋梁。

????????花點時間,按照指南把環境搭建起來,從一個簡單的窗口和按鈕開始,你就正式開啟了你的 Qt 編程之旅。

看到這里了還不給博主點一個:
?? 點贊??收藏 ?? 關注

💛 💙 💜 ?? 💚💓 💗 💕 💞 💘 💖
再次感謝大家的支持!
你們的點贊就是博主更新最大的動力!

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

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

相關文章

pandas學習筆記

前言 總結才是知識&#xff0c;作者習慣不好&#xff0c;不會總結&#xff0c;導致函數一旦不使用就會忘記怎么使用&#xff0c;特此寫了本文&#xff0c;用于給自己一個復習的資料. 提示&#xff1a;如果你是小白&#xff0c;每個代碼請自己敲打。 一 pandas的介紹 Pandas is…

算法題(力扣每日一題)—改變一個整數能得到的最大差值

給你一個整數 num 。你可以對它進行以下步驟共計 兩次&#xff1a; 選擇一個數字 x (0 < x < 9). 選擇另一個數字 y (0 < y < 9) 。 數字 y 可以等于 x 。 將 num中所有出現 x 的數位都用 y 替換。 令兩次對 num 的操作得到的結果分別為 a 和 b 。 請你返回 a 和 b…

Kubernetes筆記

1.簡介 Kubernetes的本質是一組服務器集群&#xff0c;它可以在集群的每個節點上運行特定的程序&#xff0c;來對節點中的容器進行管理。目的是實現資源管理的自動化&#xff0c;主要提供了如下的主要功能&#xff1a; 自我修復&#xff1a;一旦某一個容器崩潰&#xff0c;能夠…

Flutter——數據庫Drift開發詳細教程(八)

目錄 自定義 SQL 類型定義類型使用自定義類型在 Dart 中在 SQL 中 方言意識支持的 SQLite 擴展json1fts5地緣壟斷 自定義 SQL 類型 Drift 的核心庫主要以 SQLite3 為目標平臺編寫。這體現在Drift 開箱即用的SQL 類型上——這些類型由 SQLite3 支持&#xff0c;并新增了一些由 …

安卓遠控工具 CRaxsRat v7.6 安裝與使用教程(僅供合法測試學習)

在當今的信息安全領域&#xff0c;移動設備已成為重點關注對象。本文將介紹一款用于遠程管理與教學研究的工具 —— CRaxsRat v7.6&#xff0c;并詳細講解其安裝與使用流程。本教程僅供網絡安全愛好者在合法授權環境下學習使用&#xff0c;嚴禁任何非法用途。 &#x1f50d; 一…

容器的本質是進程

前言 Linux 容器的本質&#xff0c;是一個被隔離和限制的進程。 與虛擬機不同&#xff0c;容器無需虛擬化一個完整的操作系統&#xff0c;所以它比虛擬機更輕量級&#xff0c;效率也更高。 Linux 容器通過 namespaces 技術來隔離容器的視圖&#xff0c;使得容器進程只能看到…

LeetCode 第75題:顏色分類

給定一個包含紅色、白色和藍色、共n個元素的數組nums&#xff0c;原地對它們進行排序&#xff0c;使得相同顏色的元素相鄰&#xff0c;并按照紅色、白色、藍色順序排序。 使用整數0、1和2分布表示紅色、白色和藍色。 必須在不使用庫內置sort函數的情況下解決這個問題。 示例1&a…

PHP基礎-函數

函數是一段可重復使用的代碼塊&#xff0c;可以將一系列操作封裝起來&#xff0c;使代碼更加模塊化、可維護和可重用&#xff0c;來大大節省我們的開發時間和代碼量&#xff0c;提高編程效率。在PHP中你可以使用&#xff1a; 內置函數&#xff08;如 strlen()、array_merge()&a…

【FastAPI高級實戰】結合查詢參數與SQLModel Joins實現高效多表查詢(分頁、過濾、計數)

想象一下&#xff0c;你正在開發一個超酷的Web應用&#xff0c;比如一個博客平臺或者一個在線商店。你的API不僅要能把數據&#xff08;比如文章列表、商品信息&#xff09;展示給用戶&#xff0c;更要聰明到能理解用戶的各種“小心思”&#xff1a;用戶可能想看最新的文章、搜…

華為OD-2024年E卷-通過軟盤拷貝文件[200分] -- python

問題描述&#xff1a; 有一名科學家想要從一臺古董電腦中拷貝文件到自己的電腦中加以研究。但此電腦除了有一個3.5寸軟盤驅動器以外&#xff0c;沒有任何手段可以將文件持貝出來&#xff0c;而且只有一張軟盤可以使用。因此這一張軟盤是唯一可以用來拷貝文件的載體。科學家想要…

Keepalived 高可用,nginx + keepalived , lvs + keepalived、 數據庫+keepalived

keepalived 官網 Keepalived 可以用來防止服務器單點故障的發生 # 原理 是基于VRRP協議實現的&#xff0c;當backup收不到vrrp包時&#xff0c;就認為master宕機了&#xff0c;這時就需要根據VRRP的優先級來選舉一個backup 當master&#xff0c;就實現服務的HA&#xff08;高…

開疆智能Devicenet轉ModbusTCP網關連接臺達從站通訊模塊配置案例

本案例是通過開疆智能Devicenet轉ModbusTCP網關連接臺達Devicenet從站通訊模塊DVPDT02-H2的配置案例&#xff0c;網關作為ModbusTCP服務器和Devicenet主站&#xff0c;連接臺達Devicenet從站&#xff0c; 配置過程&#xff1a; 首先配置Devicenet從站&#xff0c;先設置從站De…

網絡NAT是什么

網絡NAT&#xff08;Network Address Translation&#xff0c;網絡地址轉換&#xff09;是一種用于計算機網絡中的技術&#xff0c;主要目的是在私有網絡與公有網絡&#xff08;比如互聯網&#xff09;之間轉換IP地址&#xff0c;實現私有網絡中的多臺設備通過一個公網IP訪問外…

React狀態管理——react-redux

目錄 一、redux介紹 二、安裝 三、基本實現步驟 3.1 創建Action Types 3.2 創建counterAction 3.3 創建counterReducer 3.4 結合所有Reducer 3.5 創建store 3.6 入口文件中提供store 3.7 在組件中的使用 3.8 使用thunk實現異步支持 3.8.1 安裝 3.8.2 在counterAct…

Java 零工市場小程序 | 靈活就業平臺 | 智能匹配 | 日結薪系統 | 用工一站式解決方案

在就業形勢如此嚴峻的情況下&#xff0c;很多小伙伴都會選擇零工的工作方式來賺取外快&#xff0c;很多用人單位也會因為職為短暫空缺或是暫時人手不夠而選擇招用兼職人員。 而Java 作為企業級開發的主流語言&#xff0c;以其卓越的性能和穩定性著稱。把零工的需求&#xff08…

數據可視化——一圖勝千言

第04篇&#xff1a;數據可視化——一圖勝千言 寫在前面&#xff1a;大家好&#xff0c;我是藍皮怪&#xff01;前面幾篇我們聊了統計學的基本概念、數據類型和描述性統計&#xff0c;這一篇我們要聊聊數據分析中最直觀、最有趣的部分——數據可視化。你有沒有發現&#xff0c;很…

1.1 Linux 編譯FFmpeg 4.4.1

一、安裝編譯工具 sudo apt install -y autoconf automake build-essential cmake git pkg-config nasm yasm libtool zlib1g-dev說明&#xff1a; autoconf&#xff1a;生成 configure 腳本&#xff0c;用于自動配置源碼。automake&#xff1a;與 autoconf 配合&#xff0c;…

【圖片識別改名】如何批量識別大量圖片的文字并重命名圖片,基于WPF和京東OCR識別接口的實現方案

應用場景 在企業文檔管理、數字圖書館、電商商品管理等場景中&#xff0c;經常需要處理大量圖片中的文字信息。例如&#xff1a; 電商平臺需要將商品圖片中的型號、規格等信息提取出來作為文件名圖書館需要將掃描的圖書頁面識別為文字并整理歸檔企業需要將紙質文檔電子化并按…

簡歷模板2——數據挖掘工程師5年經驗

姓名 / Your Name 數據挖掘工程師 | 5年經驗 | 推薦/風控/圖模型 &#x1f4de; 138-XXXX-XXXX | ?? your.emailexample.com | &#x1f310; github.com/yourname | &#x1f4cd; 北京 &#x1f3af; 個人簡介 / Summary 5年大廠數據挖掘經驗&#xff0c;碩士學歷。擅長推…

CSS3 漸變效果

1. 引言 CSS3 漸變能夠在指定顏色之間創建平滑過渡效果。這種設計元素不僅能為網頁增添豐富的視覺層次&#xff0c;更是現代網頁設計的重要組成部分。CSS3 提供兩種主要的漸變類型&#xff1a;線性漸變(Linear Gradient) - 沿直線方向進行顏色過渡&#xff1b;徑向漸變(Radial…