C++ Qt開發:Qt的安裝與配置

Qt是一種C++編程框架,用于構建圖形用戶界面(GUI)應用程序和嵌入式系統。Qt由Qt公司(前身為Nokia)開發,提供了一套跨平臺的工具和類庫,使開發者能夠輕松地創建高效、美觀、可擴展的應用程序。其被廣泛用于開發桌面應用程序、嵌入式系統、移動應用程序等。無論是初學者還是經驗豐富的開發者,Qt都為構建高質量、可維護的應用程序提供了豐富的工具和支持。

關于C++ Qt的一些關鍵特點和用途:

  1. 跨平臺性: Qt是一個跨平臺的框架,支持主流的操作系統,包括Windows、macOS、Linux以及一些嵌入式系統。這使得開發者能夠編寫一次代碼,然后在多個平臺上運行,大大簡化了跨平臺應用程序的開發。
  2. 圖形用戶界面(GUI)設計: Qt提供了強大的GUI工具包,允許開發者通過可視化設計工具創建用戶界面。Qt的設計哲學注重直觀性和易用性,使得創建各種復雜的GUI應用程序變得相對容易。
  3. 信號與槽機制: Qt引入了一種靈活的信號與槽機制,用于處理對象之間的通信。這種機制使得對象能夠在不直接了解其他對象的情況下相互通信,提高了代碼的可維護性和可擴展性。
  4. 模塊化設計: Qt采用了模塊化的設計,提供了豐富的類庫覆蓋了諸如圖形渲染、文件I/O、網絡通信、數據庫訪問等多個領域。這使得開發者能夠在項目中選擇需要的模塊,避免不必要的代碼冗余。
  5. 國際化支持: Qt支持國際化和本地化,使得應用程序能夠輕松地適應不同的語言和文化環境。
  6. 開放源代碼: Qt是一款開源框架,擁有活躍的社區支持。開發者可以自由使用、修改和分發Qt的源代碼,也可以根據需要選擇商業許可證。
  7. Qt Creator集成開發環境(IDE): Qt Creator是專為Qt設計的集成開發環境,提供了強大的代碼編輯、調試和可視化設計工具,使得開發過程更加高效。

1.1 如何安裝與配置

安裝和配置Qt通常涉及以下步驟。請注意,這里提供的步驟基于一般情況,具體步驟可能會有所不同,具體取決于您使用的操作系統。以下是一個基本的指南:

Qt的下載可以去官方網站,這里我就以5.14.2這個版本為例,請讀者也和我使用相同的版本,如下結果是Qt下載頁面;

  • 下載地址:https://download.qt.io/archive/qt/5.14/5.14.2/

這里我認為有必要說一下這些目錄分別代表了什么,這個解釋我將其歸納為了如下表所示的說明信息,讀者可自行參考學習;

目錄說明
archive各個Qt版本的安裝包、配套工具包等(注意,清華站相比主站做了裁剪,只能看到5.9之后的版本)
community_releases社區定制的Qt 庫,不用理會
development_releases開發版,有新的和舊的不穩定版本,在Qt 開發過程中的非正式版本。
learning一些學習資料
linguist_releases一款軟件,目前我沒用到,未仔細研究
ministro迷你版,目前是針對Android的版本。
official_releases正式發布版,是與開發版相對的穩定版Qt庫和開發工具,我們選擇時,應選擇此處的版本
onlineQt 在線安裝源
snapshots預覽版,最新的開發測試中的 Qt 庫和開發工具。

當下載好對應的安裝程序之后就可以安裝了,直接qt-opensource-windows-x86-5.14.2.exe運行程序,會出下如下界面,直接點擊下一步跳轉到登錄頁面,這個登陸頁面可以直接輸入一個錯誤的賬號密碼,然后點擊返回按鈕,之后就可以跳轉到安裝頁面,此頁面并不是強制的。

為了保證安裝組件的齊全,這里讀者務必全部打勾,完全充分安裝需要10GB的空間,此時應做好準備,如下圖所示;

安裝結束后就可以看到開始菜單的,Qt Creator 4.11.1 (Community)程序,直接打開該程序就可以進入到Qt的開發頁面中,如下圖所示;

以上步驟是一個基本的安裝和配置過程,具體步驟可能因Qt版本和操作系統而異。在安裝和配置過程中,可以參考Qt的官方文檔和安裝向導,這將提供更詳細和特定的說明。

1.2 配置VisualStudio

Qt 提供了 Visual Studio 插件,以便更方便地在 Visual Studio 中進行 Qt 項目的開發。以下是配置 Qt Visual Studio 插件的一般步驟:

首先要下載對應的插件文件,根據讀者自己安裝的VisualStudio版本來選擇不同的插件,由于我使用的是VS2013所以這里選擇2.3.0的版本,如下圖讀者可自行選擇對應的版本下載使用。

  • 插件下載:https://download.qt.io/development_releases/vsaddin/2.3.0/

讀者首先需要安裝好Visual Studio開發環境并確保Qt已安裝,只需要雙擊運行qt-vsaddin-msvc2013-2.3.0.vsix等待初始化并直接點擊下一步即可完成,如下圖所示;

此時打開Qt Creator 4.11.1 (Community)的根目錄,可以看到如下圖所示的開發庫,這里由于最低版本是VS2015的所以就以該案例為例子講解配置流程,讀者需要安裝最低版本為Visual Studio 2015才可以正常配置。

此處的頭文件和庫目錄就是需要配置的環境變量,打開環境變量,并依次配置如下兩個頭文件到系統中;

  • 頭文件目錄:C:\Qt\Qt5.14.2\5.14.2\msvc2015_64\include
  • 庫目錄:C:\Qt\Qt5.14.2\5.14.2\msvc2015_64\lib

接著打開visual studio,點擊Qt VS Tools>Qt Options>add new Qt version,點擊Path選擇位置,當配置好以后那么就可以使用這個環境變量了,如下圖所示;

此時讀者可以新建一個項目,在項目選項卡中就會出現Qt的相關程序創建流程,如下圖所示;

以上步驟是一個通用的配置過程,具體步驟可能會因使用的 Qt 和 Visual Studio 版本而有所不同。在進行配置時,請確保參考 Qt 和 Visual Studio 的官方文檔,以獲取最準確和詳細的說明。

1.3 如何打包Qt程序

Qt Creator是由Qt公司開發的一個集成開發環境(IDE),專門用于Qt應用程序的設計、開發和調試。它提供了一套工具,使得開發者能夠更輕松地創建跨平臺的圖形用戶界面(GUI)應用程序以及其他類型的應用程序。Qt Creator作為Qt應用程序的首選IDE,提供了全面的開發工具,使得開發者能夠高效、便捷地進行Qt項目的開發。其友好的用戶界面和強大的功能集成,使得它成為許多開發者選擇的首選工具之一。

Qt程序的創建非常簡單,只需要打開Qt Creator主頁面,選中文件并新建,在彈出的選擇菜單中Qt Widgets Application用于新建窗體應用程序,而Qt Console Application則用于新建命令行程序,我們以窗體程序為例,直接點擊Choose按鈕創建新程序,如下圖;

讀者只需要根據提示信息選擇對應的創建位置其他參數保持默認即可,需要注意在Kit選項卡中,讀者最好選擇MinGW編譯器以方便課程的跟進,如下圖所示;

此時我們只需要點擊運行按鈕,程序就可以被啟動,如下圖所示就是一個啟動后的案例;

當您在Qt程序編譯完成后,需要將其獨立于開發環境并在其他機器上正常運行時,可以通過手動拷貝所需文件或使用Qt提供的工具進行自動打包。以下是手動拷貝所需文件的步驟以及使用windeployqt工具進行自動打包的說明:

1.打開Qt自帶的命令終端程序,此處的終端程序在開始菜單中可以找到,并跳轉到編譯好的程序中去,此時如果運行程序則會提示找不到庫,這就是沒有打包造成的,如下圖;

2.執行windeployqt untitled.exe命令進行自動打包。如果是自動打包我們可以進入Qt提供的命令行頁面,跳轉到需要打包程序的目錄下,執行命令即可打包出所有的依賴文件,如下圖;

如果需要去掉不必要的庫文件,可以使用--no-參數排除多余的動態鏈接庫。例如,去掉ANGLE和OpenGL Software支持:

windeployqt --no-angle --no-opengl-sw untitled.exe

打包完成后,手動刪除多余文件,只保留以下文件即可:

  • untitled.exe(或您的程序名稱)
  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
  • libwinpthread-1.dll
  • Qt5Core.dll
  • Qt5Gui.dll
  • Qt5Widgets.dll
  • platforms/qwindows.dll

當然,如果是手動拷貝文件而不適用打包命令,則只需要從Qt安裝目錄的bin目錄中復制以下文件到您的程序目錄:

  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
  • libwinpthread-1.dll
  • Qt5Core.dll
  • Qt5Gui.dll
  • Qt5Widgets.dll

\mingw514_32\plugins目錄中復制platforms文件夾,僅保留其中的qwindows.dll文件。

通過執行這些步驟,您將能夠將Qt程序獨立于開發環境,并在其他機器上運行。確保使用正確的Qt版本和編譯工具,以確保庫和依賴項的正確匹配。

當我們打包完成后,直接運行主程序將可以脫離Qt環境直接使用,如下圖所示;

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

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

相關文章

Python---random庫

目錄 基本隨機數函數(): rand.seed() random() 擴展隨機數函數(): random庫包含兩類函數:基本隨機數函數,擴展隨機數函數 基本隨機數函數:seed(),random() 擴展隨機數函數:randint,getrandbits(),uniform(),randrange(),choice(),shuff…

猴子吃桃問題(for循環)

一只猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個;第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半加一個。到第N天早上想再吃時,見只剩下一個桃子了…

ECS云主機容量大于2TB,初始化Linux數據盤(parted)

本文為您介紹當容量大于2TB時,如何在Linux環境下適用parted分區工具初始化數據盤。 操作場景 本文以“CentOS 7.6 64位”操作系統為例,介紹當磁盤容量大于2TB時,如何使用parted分區工具在Linux操作系統中為數據盤設置分區,操作回…

SAP UI5 walkthrough step6 Modules

在SAPUI5 中,資源通常用作Modules,這個我們將用Message Toast 來實現告警功能 修改controller.js webapp/controller/App.controller.js sap.ui.define(["sap/ui/core/mvc/Controller","sap/m/MessageToast" ], (Controller, Mes…

Python中的Alpha-Beta剪枝算法:優化博弈樹搜索

標題:Python中的Alpha-Beta剪枝算法:優化博弈樹搜索 摘要:Alpha-Beta剪枝算法是一種用于優化博弈樹搜索的算法,能夠降低搜索的時間復雜度,提高程序的性能和效率。本文將介紹Alpha-Beta剪枝算法的原理,以及…

Java 1對1

文章目錄 前言 客戶端 服務器端 輸出線程端 End 前言 TCP(Transmission Control Protocol)是一種面向連接的、可靠的網絡傳輸協議,它提供了端到端的數據傳輸和可靠性保證。 本程序就是基于tcp協議編寫而成的。 利用 TCP 協議進行通信的…

js 復制粘貼板,當clipboardjs 不好使怎么辦?

最近項目中做一個很常見的復制粘貼的功能耽誤了比較長的時間特此記錄&#xff0c;在往常這個功能直接用 clipboard 做就行了&#xff0c;但是這次卻發現復制功能不好使了&#xff0c;雖然走了復制成功的回調&#xff0c;但是粘貼板并沒有復制的內容。代碼如下 <div v-for&q…

java實現冒泡排序算法

文章目錄 冒泡排序算法 冒泡排序算法 算法原理&#xff1a; 比較相鄰的元素。如果第一個比第二個大&#xff0c;就交換他們兩個。 對每一對相鄰元素做同樣的工作&#xff0c;從開始第一對到結尾的最后一對。在這一點&#xff0c;最后的元素應該會是最大的數。 針對所有的元素重…

Leetcode 345. Reverse Vowels of a String

Problem Given a string s, reverse only all the vowels in the string and return it. The vowels are ‘a’, ‘e’, ‘i’, ‘o’, and ‘u’, and they can appear in both lower and upper cases, more than once. Algorithm Collect all the vowels and reverse the…

人工智能教程(三):更多有用的 Python 庫

目錄 前言 推薦 JupyterLab 入門 復雜的矩陣運算 其它人工智能和機器學習的 Python 庫 前言 在本系列的上一篇人工智能教程&#xff08;二&#xff09;&#xff1a;人工智能的歷史以及再探矩陣中&#xff0c;我們回顧了人工智能的歷史&#xff0c;然后詳細地討論了矩陣。在…

【數據結構和算法】--- 棧

目錄 棧的概念及結構棧的實現初始化棧入棧出棧其他一些棧函數 小結棧相關的題目 棧的概念及結構 棧是一種特殊的線性表。相比于鏈表和順序表&#xff0c;棧只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂&#xff0c;另一端稱為棧底。棧中的…

概率論之 證明 正態分布的上a 分位點的對稱的性質

公式(Z(a) -Z(1-a)) 表示正態分布的上(a)分位點與下(1-a)分位點在分布曲線上關于均值的對稱性。 左側 (Z(a))&#xff1a; 這是分布曲線上累積概率為(a)的那個點。也就是說&#xff0c;這是一個使得這個點及其左側的面積占據整個曲線下方(a)的位置。 右側 (Z(1-a))&#xff1…

Kubernetes(K8s 1.27.x) 快速上手+實踐,無廢話純享版

文章目錄 1 基礎知識1.1 K8s 有用么&#xff1f;1.2 K8s 是什么&#xff1f;1.3 k8s 部署方式1.4 k8s 環境解析 2 環境部署2.1 基礎環境配置2.2 容器環境操作2.3 cri環境操作2.4 harbor倉庫操作2.5 k8s集群初始化2.6 k8s環境收尾操作 3 應用部署3.1 應用管理解讀3.2 應用部署實…

[Firefly-RK3399] TFTP/NFS網絡啟動內核與Buildroot文件系統

?網絡啟動&#xff0c;是用 TFTP 在服務器下載內核、dtb 文件到目標機的內存中&#xff0c;同時可以用 NFS 掛載網絡根文件系統到目標機上&#xff0c;實現目標機的無盤啟動。 準備工作&#xff1a; Firefly-RK3399 板卡&#xff1b;路由器、網線&#xff1b;安裝有 NFS 和 …

微前端 前置知識2--- monorepo架構

目錄 前言 pnpm vs npm pnpm設計思想 硬連接 軟鏈接 &#xff08;符號鏈接&#xff09; 原理 pnpm 指令 monorepo架構 介紹 配置monorepo pnpm --filter 前言 我們采用的是微前端一個主應用&#xff0c;和多個子應用&#xff0c;我們肯定不會一個一個去install安裝…

uniapp微信小程序富文本、小程序富文本、rich-text解決video問題

我直接使用的 mp-html mp-html 相當好用&#xff0c;功能比較完善&#xff0c;也可以二次開發 具體的直接看官方文檔吧

Linux安全學習路標

1. 操作系統基礎知識 首先&#xff0c;你需要建立堅實的操作系統基礎知識&#xff0c;包括Linux文件系統和目錄結構、Linux進程管理、權限管理等基本概念。 2. 網絡和通信安全 學習關于網絡和通信安全的基礎知識&#xff0c;包括TCP/IP協議棧、網絡攻擊類型、防火墻配置、網…

vscode + Linux 如何在編輯器調試webserver這類完整C++項目

1. 問題背景 網上搜的一堆文章都是教如何調試單個文件&#xff0c;或者一個文件夾下含了所有cc和頭文件&#xff0c;但很多項目頭文件和實現在上級目錄的子文件中&#xff0c;vscode直接調試main函數所在文件時&#xff0c;直接報錯某些頭文件找不到(xxx.h not found 或者 und…

12.5單端口RAM,JS計數器,流水線乘法器,不重疊序列檢測器(狀態機+移位寄存器),信號發生器,交通燈

單端口RAM timescale 1ns/1nsmodule RAM_1port(input clk,input rst,input enb,input [6:0]addr,input [3:0]w_data,output wire [3:0]r_data );reg [6:0]mem[127:0];integer i;always (posedge clk or negedge rst) beginif(!rst) beginfor (i0; i<127 ; ii1) beginmem[i]…

Linux--權限問題(1)

前文 Linux--初識和基本的指令&#xff08;1&#xff09;-CSDN博客 Linux--初識和基本的指令&#xff08;2&#xff09;-CSDN博客 Linux--初識和基本的指令&#xff08;3&#xff09;-CSDN博客 目錄 前文 前言 1.剩余指令部分 1.1 打包和壓縮的其它指令 2.權限部分 2.1權…