【QT+VS】如何在現有VS項目中添加Qt界面?【全網最詳細】

0. 前置步驟

參考如下鏈接文章中的 前3個步驟(1:下載Qt;2:安裝Qt;3:安裝Qt插件),完成環境的配置和安裝。
深耕AI:如何聯合Qt,VS,C++,來開發一個電腦版軟件(簡單有趣,詳細)

本文的基礎項目鏈接為:
c++工程+圖像分割預測+mmdet+實例分割+最新工程+簡潔易懂+新手學習資源

基礎項目頁面截圖

1. 配置Qt插件

進人VS2019后,在擴展下面選擇Qt VS Tools->Qt Options。
在這里插入圖片描述

然后進行qt配置。選擇Qt->Versions,下的安裝目錄下路徑,即可。
在這里插入圖片描述

2. 配置包含目錄及鏈接器

VC++目錄->包含目錄 添加:

D:\software\QT\6.6.2\msvc2019_64\include

VC++目錄->庫目錄下 添加:

D:\software\QT\6.6.2\msvc2019_64\lib

鏈接器->輸入->附加依賴項 中添加下面項:

Qt6Widgetsd.lib
Qt6Widgets.lib
Qt6Guid.lib
Qt6Gui.lib
Qt6Cored.lib
Qt6Core.lib

在這里插入圖片描述

3. 添加QT界面

a. 添加UI界面

鼠標右鍵項目,點擊添加->新建項,Visual C+±>Qt->Qt MainWindow From File,點擊添加。

在這里插入圖片描述

此時,就可以看到 MainWindow001.ui 文件 已經添加到了我們的項目中。
然后和Qt Creator創建的ui文件一樣,我們可以直接雙擊打開。
如果打開報錯如下:

在這里插入圖片描述

解決方案:
第1步:右擊該 .ui 文件,選擇“打開方式”;
在這里插入圖片描述

第2步:點擊右上角“添加”;
在這里插入圖片描述

第3步:點擊 “…”;
在這里插入圖片描述

第4步:選擇 Qt 安裝目錄下的 “designer.exe”,點擊 “打開”;
我的 Qt 安裝目錄:D:\software\QT\6.6.2\msvc2019_64\bin
在這里插入圖片描述

所以選擇:
在這里插入圖片描述

第5步:在 友好名稱 列表中填寫一個名字(不建議中文),我這里填寫的是 “Qt Designer selected” ,然后點擊確定。
在這里插入圖片描述

第6步:最后選中自己剛才所起的名字 “Qt Designer selected” ,點擊 “設為默認值” ,“確定”。
在這里插入圖片描述

然后,就會看到:
在這里插入圖片描述

接下來:
在里面設計我們的界面。 (比如我在這里加3個按鈕pushButton和2個路徑顯示框lineEdit)
在這里插入圖片描述

注意!!!
Visual Studio中,使用鼠標右鍵點擊項目,然后選擇“添加”->“新建項”,在彈出的模板列表中選擇“Visual C++”->“Qt”,會有一系列與Qt開發相關的選項。
這些選項通常對應不同的Qt組件或項目元素,可以幫助我們快速創建特定類型的源文件或資源文件,以便構建基于Qt的應用程序。

  • Qt Class:創建一個 Qt 類,通常用于實現特定的功能或邏輯。
  • Qt Dialog Form (Button Bottom):創建一個帶有底部按鈕的對話框形式的窗口。
  • Qt Dialog Form (Button Right):創建一個帶有右側按鈕的對話框形式的窗口。
  • Qt MainWindow Form File:創建一個主窗口形式的文件,通常用于應用程序的主界面。
  • Qt QML File:創建一個 QML 文件,用于描述應用程序的用戶界面。
  • Qt QML Module Definition:創建一個 QML 模塊定義文件,用于組織和管理 QML 文件。
  • Qt Resource File:創建一個資源文件,用于存儲應用程序使用的靜態資源(如圖像、音頻等)。
  • Qt Widget Form File:創建一個基于 Qt Widgets 的窗口形式的文件。
  • Qt Widgets Class:創建一個基于 Qt Widgets 的類,用于實現特定的用戶界面元素。
  • Qt Translation File:創建一個翻譯文件,用于支持多語言。
  • Qt QML Module Definition:創建一個 QML 模塊定義文件,用于組織和管理 QML 文件。

在實際應用程序開發中,常用的 Qt 類型有:

  • Qt Class:最通用的類類型,可以用于創建各種自定義功能。

  • Qt Dialog Form (Button Bottom):在需要用戶輸入或確認信息時很常見,例如確認對話框或設置對話框。

  • Qt MainWindow Form File:主窗口是應用程序的核心,包含菜單欄、工具欄和中央區域,用于展示應用程序的主要內容。

  • Qt Widget Form File:Widgets 是構建傳統桌面應用程序界面的基本元素,因此這種類型的文件在傳統桌面應用程序中非常常見。

  • Qt Translation File:翻譯文件,用于支持多語言。在國際化應用程序時非常有用,可以將用戶界面文本翻譯成不同的語言。

根據你的項目需求,選擇合適的選項來創建新的文件。
例如,如果你正在開發一個桌面應用程序,并且需要一個主窗口作為應用程序的入口點,那么你應該選擇“Qt MainWindow Form File”。如果你需要創建一個對話框或者特定的用戶界面元素,可以選擇相應的對話框或 widget 類型。

b. 配置文件屬性

① 右鍵點擊剛添加的 MainWindow001.ui 文件,選擇屬性。
在這里插入圖片描述

② 配置和平臺為 Release 和x64,項類型選擇自定義生成工具,點擊應用,左側會生成自定義生成工具選項,界面如下:
在這里插入圖片描述

  • 在命令行輸入:
"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"

注意:這個命令行指令,用于調用 Qt 的用戶界面編譯器(UI Compiler,簡稱 UIC),將用戶界面文件(通常是以.ui為擴展名的文件)轉換為相應的C++頭文件。
"$(QTDIR)\bin\uic.exe":指定了 UIC 可執行文件的路徑,這個路徑通常是 Qt 安裝目錄下的 bin 文件夾中的 uic.exe 文件。
-o ".\GeneratedFiles\ui_%(Filename).h":指定了輸出的文件路徑和文件名。-o 參數表示輸出,.\GeneratedFiles\ui_%(Filename).h 是輸出文件的路徑,%(Filename) 是輸入文件的文件名,這里是為了保留輸入文件的文件名,而在前面加上了"ui_"前綴。
"%(FullPath)":表示要轉換的用戶界面文件的完整路徑。這個路徑是在命令行中傳入的。

  • 說明輸入:
Uic%27ing %(Identity)...

注意:這個說明描述了正在進行的操作【表示正在使用 UIC 進行處理】
其中使用了參數 %27 來表示單引號 ',因此 :
‘%27ing’ 實際上就是 ‘ing’
‘%(Identity)’ 是一個通配符,代表輸入文件的路徑

  • 輸出輸入:
.\GeneratedFiles\ui_%(Filename).h;%(Outputs)

注意:關于輸出的文件路徑的描述,其中包含了一個通配符 %(Filename) 和一個占位符 %(Outputs)
.\GeneratedFiles\ui_%(Filename).h:表示輸出文件的路徑,其中 % (Filename) 是一個通配符,代表輸入文件的文件名,然后加上了 "ui_" 前綴,表示輸出文件的文件名。
%(Outputs):這是一個占位符,用于表示所有的輸出文件。在這個上下文中,它實際上是一個空白的占位符,因為這個命令行中沒有其他輸出文件被指定。

  • 附加依賴項輸入:
$(QTDIR)\bin\uic.exe;%(AdditionalInputs)

注意:表示在執行編譯任務時,除了需要使用 Qt 的 UIC 可執行文件外,可能還需要其他的額外輸入依賴項,這些額外的輸入依賴項由 %(AdditionalInputs) 占位符代表。
$(QTDIR)\bin\uic.exe:表示 UIC 可執行文件的路徑,通常位于 Qt 的安裝目錄下的 bin 文件夾中。這個路徑是一個固定的依賴項,確保在執行編譯任務時能夠找到 UIC 可執行文件。
%(AdditionalInputs):一個占位符,用于表示額外的輸入依賴項。在這個上下文中,它可能包含了其他與編譯任務相關的輸入文件,但具體內容沒有在提供的上下文中指定。

  • 鏈接對象選擇:是。

③ 選擇 視圖->其他窗口->屬性管理器。
在這里插入圖片描述

選項 Release | x64 右鍵>添加新項目屬性表。這里命名為”PropertySheet001.props”。
在這里插入圖片描述

④ detector->Release | x64->PropertySheet01.props->屬性->用戶宏->添加宏。

名稱: QTDIR
值:D:\software\QT\6.6.2\msvc2019_64

在這里插入圖片描述

在這里插入圖片描述

c. 編譯UI文件

① 切換回:視圖>解決方案資源管理器。
在這里插入圖片描述

② 右鍵ui文件,選擇編譯。
在這里插入圖片描述

你會發現在路徑…\build\GeneratedFiles下生成了 ui_MainWindow001.h 文件。
在這里插入圖片描述

③ 右鍵項目,選擇添加->現有項->.\GeneratedFiles\ui_MainWindow001.h,里面是UI界面控件的定義聲明。
在這里插入圖片描述

添加后,該頭文件會自動添加到我們的項目 頭文件 文件夾中。
在這里插入圖片描述

可以打開這個頭文件看一下,會發現里面都是 Qt定義的各種界面屬性 代碼,包括各種你的控件:

/********************************************************************************
** Form generated from reading UI file 'MainWindow001.ui'
**
** Created by: Qt User Interface Compiler version 6.6.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/#ifndef UI_MAINWINDOW001_H
#define UI_MAINWINDOW001_H#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QWidget>QT_BEGIN_NAMESPACEclass Ui_MainWindow
{
public:QWidget *centralwidget;QPushButton *pushButton_model;QPushButton *pushButton_img;QLineEdit *lineEdit_model;QLineEdit *lineEdit_img;QPushButton *pushButton_run;QMenuBar *menubar;QStatusBar *statusbar;void setupUi(QMainWindow *MainWindow){if (MainWindow->objectName().isEmpty())MainWindow->setObjectName("MainWindow");MainWindow->resize(800, 600);centralwidget = new QWidget(MainWindow);centralwidget->setObjectName("centralwidget")

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

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

相關文章

搭建自己的視頻通話服務器Janus(WebRTC)

1. 安裝janus apt install janus 高版本的Ubuntu已經可以直接安裝了&#xff0c;不要編譯那么麻煩了 2. 安裝nginx janus 是后端&#xff0c;需要nginx或者其他等提供前端頁面的服務器&#xff0c;此外因為這里并沒有正式的證書&#xff0c;只能用自簽名的證書用于https。 …

Mac 更改登陸密碼,不是appleid 密碼

在Mac 上更改登錄密碼 在Mac 上&#xff0c;選取蘋果菜單 >“系統設置”&#xff0c;然后點按邊欄中的“用戶與群組” 。 … 點按右側用戶名旁邊的“簡介”按鈕 。 點按“更改”。 在“舊密碼”欄輸入你的當前密碼。 在“新密碼”欄中輸入新密碼&#xff0c;然后在“確認密碼…

「數據結構」隊列

目錄 隊列的基本概念 隊列的實現 頭文件queue.h 實現函數接口 1.初始化和銷毀 2.出隊列和入隊列 3.獲取隊頭元素和隊尾元素 4.隊列長度判空 后記 前言 歡迎大家來到小鷗的博客~ 個人主頁&#xff1a;海盜貓鷗 本篇專題&#xff1a;數據結構 多謝大家的支持啦&#xff…

Java入門基礎學習筆記36——面向對象基礎

面向對象編程快速入門&#xff1a; 計算機是用來處理數據的。 單個變量 數組變量 對象數據 Student類&#xff1a; package cn.ensource.object;public class Student {String name;double chinese_score;double math_score;public void printTotalScore() {System.out.pr…

【哈希】Leetcode 219. 存在重復元素 II【簡單】

存在重復元素 II 給你一個整數數組 nums 和一個整數 k &#xff0c;判斷數組中是否存在兩個 不同的索引 i 和 j &#xff0c;滿足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 示例 1&#xff1a; 輸…

偏微分方程算法之橢圓型雙調和方程問題

目錄 一、研究對象 二、問題解析 一、研究對象 針對雙調和方程的邊值問題:

達夢數據庫使用dmlcvt命令找回更改前的數據

在生產系統上不小心修改了表數據后最快的方法是用閃回查詢找回。但時間不能超過undo_retention&#xff08;默認90秒&#xff09;。其實最標準的處理方法是在其他機器上將數據庫恢復到修改前的時刻。但數據庫比較大時恢復時間較長。真實場景可能比較急。那么也可以分析歸檔日志…

數組序號Spinner

使用Spnner代替編輯框&#xff0c;只能選擇已有的&#xff0c;不會越界&#xff0c;大大簡化了代碼。 String[] SA new String[list.size()]; for (int i0; i<SA.length; i) {SA[i] String.valueOf(i); } ArrayAdapter<String> adapter1 new ArrayAdapter<>(…

[國產大模型簡單使用介紹] 開源與免費API

個人博客:Sekyoro的博客小屋 個人網站:Proanimer的個人網站 隨著大模型技術蓬勃發展和開源社區越來越活躍,國內的大模型也如雨后春筍一般.這時,一些就會問了,有了llama3,Mistral還有Gemma等等,國外大廠接連發力,一些開源社區也會有一些不錯的模型,國內怎么比?對一個人使用,oll…

下雨!大水蟻引發的水文!看比賽咯,曼聯VS曼城——早讀(逆天打工人爬取熱門微信文章解讀)

嘮嘮嗑 水一水 引言Python 代碼結尾 引言 今天星期六 大小周 一個等了很久的雙休 昨天晚上真的是嚇到我了 漫天的小飛蟲 我一開始還以為是一兩只 沒想到那些小飛蟲 從陽臺不斷飛進來 在山卡拉下面租房子 也是太恐怖了 來個特寫 他們也就一個晚上的時間 成蟲 天氣合適 長翅…

大語言模型發展歷史

大語言模型的發展歷史可以追溯到自然語言處理&#xff08;NLP&#xff09;和機器學習早期的探索&#xff0c;但真正快速發展起來是在深度學習技術興起之后。以下是大語言模型發展的一個簡要歷史概述&#xff1a; 早期階段&#xff08;20世紀50-90年代&#xff09;&#xff1a; …

網絡拓撲—DNS服務搭建

文章目錄 DNS服務搭建網絡拓撲配置網絡DNSPC 安裝DNS服務配置DNS服務創建正向查找區域創建反向查找區域創建子域名 PC機DNS域名解析 DNS服務搭建 網絡拓撲 為了節省我的U盤空間&#xff0c;沒有用路由器&#xff0c;所以搭建的環境只要在同網段即可。 //交換機不用考慮 DNS&a…

MiniCPM-Llama3-V-2_5-int4

MiniCPM-Llama3-V-2_5-int4大模型部署使用環境&#xff1a; python3.8cuda11.8其它要求&#xff0c;按照安裝文檔要求下載即可 我是在算力平臺用4090跑的&#xff0c; GPU 顯存&#xff08;8GB&#xff09;可以部署推理 int4 量化版本&#xff0c;如果推理非量化版本需要更高顯…

云部署最簡單python web

最近在玩云主機&#xff0c;考慮將簡單的web應用裝上去&#xff0c;通過廣域網訪問一下&#xff0c;代碼很簡單&#xff0c;所以新手幾乎不會碰到什么問題。 from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return Hello, World!app.route(/gree…

2024洗地機哪個牌子好?洗地機十大品牌

洗地機在不同家庭環境中都能發揮其獨特的優勢&#xff0c;無論是大面積的地板還是狹小的角落&#xff0c;都能輕松應對。 對于有孩子或寵物的家庭&#xff0c;地面上經常會有各種雜物和污漬&#xff0c;洗地機強大的吸力和深度清潔功能&#xff0c;可以迅速清理掉這些臟東西&a…

數理邏輯:1、預備知識

17.1 命題和聯結詞 ? 命題&#xff1a;可以判定真假的陳述句。&#xff08;則悖論&#xff0c;祈使句&#xff0c;疑問句都不是命題&#xff09; ? 原子命題&#xff1a;不能被分割為更小的命題的命題 例如&#xff1a; 2既是素數又是偶數 可以由$p: 2 是素數&#xff0c;…

DNS的服務與部署(2)

1、dns的安裝及開啟 dnf install bind.x86_64 -y #安裝 #Berkeley Internet Name Domain (BIND) systemctl enable --now named #啟用dns服務&#xff0c;服務名稱叫named firewall-cmd --permanent --add-servicedns #火墻設置 firewall-cmd --reload …

基于SSH的母嬰用品銷售管理系統帶萬字文檔

文章目錄 母嬰商城系統一、項目演示二、項目介紹三、系統部分功能截圖四、萬字論文參考五、部分代碼展示六、底部獲取項目源碼和萬字論文參考&#xff08;9.9&#xffe5;帶走&#xff09; 母嬰商城系統 一、項目演示 母嬰商城系統 二、項目介紹 基于SSH的母嬰商城系統 系統…

Tina-Linux -- 3. LVGL測試

參考韋東山 – Tina_Linux_圖形系統_開發指南 Tina-linux lvgl 配置 環境配置 進入Tina-SDK根目錄 source build/envsetup.sh lunch XXX平臺名稱 make menuconfigLVGL Gui --->Littlevgl --->< > lv_demo<*> lv_examples &#xff08;lvgl官方demo&#…

【區塊鏈】fisco節點運維 更新ing

基于已完成的區塊鏈系統與管理平臺搭建工作&#xff0c;開展區塊鏈節點的加入與退出運維工作&#xff0c;具體內容如下 以下只是舉例子講 如果有其他修改沒舉例出來可以留言 私信 主要以比賽出題的形式講 區塊鏈節點輸出等級為警告級&#xff0c;并設置日志存儲閾值為100MB并…