【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.mzph.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…

达梦数据库使用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 代码结尾 引言 今天星期六 大小周 一个等了很久的双休 昨天晚上真的是吓到我了 漫天的小飞虫 我一开始还以为是一两只 没想到那些小飞虫 从阳台不断飞进来 在山卡拉下面租房子 也是太恐怖了 来个特写 他们也就一个晚上的时间 成虫 天气合适 长翅…

网络拓扑—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并…

Capture One Studio for Mac:打造完美影像的利器

对于摄影师而言&#xff0c;每一次按下快门都是一次对完美影像的追求。而Capture One Studio for Mac正是这样一款能够帮助你实现这一追求的利器。 Capture One Studio for Mac v16.4.2.1中文直装版下载 首先&#xff0c;Capture One Studio for Mac拥有出色的图像处理能力。它…

从零起航,Python编程全攻略

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、Python入门之旅 二、Python进阶之道 三、Python爬虫实战 四、Python数据分析利器 五…

kind: Telemetry

访问日志 访问日志提供了一种从单个工作负载实例的角度监控和理解行为的方法。 Istio 能够以一组可配置的格式为服务流量生成访问日志&#xff0c; 使操作员可以完全控制日志记录的方式、内容、时间和地点。 有关更多信息&#xff0c;请参阅获取 Envoy 的访问日志。 https:/…