【QT+VS】如何在现有VS项目中添加Qt界面?【全网最详细】

news2024/11/17 22:20:35

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_NAMESPACE

class 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.coloradmin.cn/o/1692595.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

方正畅享全媒体新闻采编系统 binary.do SQL注入漏洞复现

0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…

Mysql 备份恢复 mysqldump与xtrabackup备份

1.1 备份的原因 备份是数据安全的最后一道防线&#xff0c;对于任何数据丢失的场景&#xff0c;备份虽然不一定能恢复百分之百的数据 (取决于备份周期)&#xff0c;但至少能将损失降到最低。衡量备份恢复有两个重要的指标&#xff1a;恢复点目标(RPO) 和恢复时间目标(RTO)&…

1.freertos基础知识

1.freertos最核心的概念就是多线程&#xff0c;就是可以让两段代码同时进行。 2.针对不同的用户场景&#xff0c;freertos提供了4种交互方式&#xff1a;消息队列&#xff0c;任务通知&#xff0c;信号量&#xff0c;互斥锁 3.什么是API&#xff1f;API是应用程序编程接口&…

【退役之重学Java】关于B+树索引

一、为什么使用索引 一条数据可能有很多字段&#xff0c;数据量比较大&#xff0c;挨个查询效率极差故使用索引&#xff0c;提高查询性能和加快数据检索速度。同时还可以帮助优化排序、分组和连接操作&#xff0c;提高数据库系统的整体性能和响应速度。 二、为什么要用 B 树 B树…

HarmonyOS 鸿蒙应用开发 - 创建自定义组件

开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑与UI分离&#xff0c;后续版本演进等因素。因此&#xff0c;将UI和部分业务逻辑封装成自定义组件是不可或缺的能力。 1、创…

Stable Diffusion简单食用方法

1.下载 1.1打开B站 哔哩哔哩 (゜-゜)つロ 干杯~-bilibili哔哩哔哩&#xff08;bilibili.com)是国内知名的视频弹幕网站&#xff0c;这里有及时的动漫新番&#xff0c;活跃的ACG氛围&#xff0c;有创意的Up主。大家可以在这里找到许多欢乐。https://www.bilibili.com/ 1.2搜索…

【CSS】input宽度根据内容自适应

目标&#xff1a;纯css实现以下功能 input 设置width:min-content | max-content&#xff1b;//无效 ∵ 文本输入框通常会被浏览器渲染为具有固定宽度的控件。 解决方法&#xff1a;设置input的宽高都为100%&#xff0c;让它随着父元素的宽高改变。 父元素如何改变呢&#xf…

可视化在医疗健康领域的巨大价值,该如何设计呢。

可视化设计在医疗健康领域具有以下价值&#xff1a; 数据展示与分析&#xff1a;可视化设计可以将医疗健康领域的大量数据以图表、图形等形式进行展示和分析&#xff0c;帮助医生、研究人员和决策者更直观地理解和解读数据&#xff0c;发现规律和趋势&#xff0c;从而做出科学决…

HTTP 错误 404.3 - Not Found 问题处理

问题描述 HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本&#xff0c;请添加处理程序。如果应下载文件&#xff0c;请添加 MIME 映射。 解决对策

MATLAB构建一些简单的人工数据集

1. 构建一个2维3类的数据集 %高斯二维三类 1 3 mul[0,0]; % 均值 S1[.1 0;0 .1]; % 协方差 data1mvnrnd(mul, S1, 100); % 产生高斯分布数据 % 第二组数据 mu2[1.25 1.25]; S2[.1 0;0 .1]; data2mvnrnd(mu2,S2,100); % % 第三组数据 mu3[-1.25;1.25] S3[.1 0;0 .1] data3mvn…

企业级架构及本体论最新进展

本文主要探讨了企业级架构和本体论的新兴趋势&#xff0c;特别是DoDAF、IDEAS、UAF和NAF的发展历程、理论基础、模型构建以及与ArchiMate和语义网技术的关联。原文: The emerging landscape of Enterprise Architecture and Ontology 导言 动机和采用的方法 关注我的人都知道我…

ROCm上运行预训练BERT

14.10. 预训练BERT — 动手学深度学习 2.0.0 documentation (d2l.ai) 下载数据集 在d2l-zh/pytorch/data目录解压&#xff1a; ~/d2l-zh/pytorch/data$ unzip wikitext-2-v1.zip Archive: wikitext-2-v1.zipcreating: wikitext-2/inflating: wikitext-2/wiki.test.tokens …

Autodesk 3DS Max v2025 解锁版安装教程 (3D 建模软件)

前言 Autodesk 3ds Max 是一款功能强大的 3D 建模和动画解决方案&#xff0c;游戏开发人员、视觉效果艺术家和平面设计师使用它来创建庞大的世界、令人惊叹的场景和引人入胜的虚拟现实 (VR) 体验。 Autodesk 3DS MAX是业界使用最广泛的3D建模和动画软件程序之一&#xff0c;它…

MoE 系列论文解读:Gshard、FastMoE、Tutel、MegaBlocks 等

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接…

并发编程:ScheduledThreadPoolExecutor你真的了解吗?

前言 首先看到标题&#xff0c;我们其实很多人都知道&#xff0c;但是呢 在实际项目中我们面对很多延迟任务实现方案有很多选择&#xff0c;甚至直接在网上百度反正都能实现就行&#xff0c;但是忽略了很多细节&#xff0c;导致生产上的事故&#xff0c;都是因为没有真正了解到…

根据多个坐标经纬度获取到中心点的经纬度,scala语言

文章目录 前言scala 代码 总结 前言 Scala 语言 通过多个经纬度坐标点, 计算出中心点, 这里使用的是 Scala 语言,其他的语言需要自行转换。求出来的并不是原有的点&#xff0c;而是原有点的中心位置的点。 scala 代码 package com.dw.process.midimport java.lang.Double.pa…

数据库DCL语句

数据库DCL语句 介绍&#xff1a; DCL英文全称是Data Control Language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访 问权限。 管理用户&#xff1a; 查询用户: select * from mysql.user;创建用户: create user 用户名主机名 identified by 密码;修改用…

CSDN 自动评论互动脚本

声明 该脚本的目的只是为了提升博客创作效率和博主互动效率,希望大家还是要尊重各位博主的劳动成果。 数据库设计 尽量我们要新建一个数据库csdn_article,再在其中建一个数据表article -- csdn_article-- article-- 需要进行自动评论的表格信息...CREATE TABLE `article`…

python低阶基础100题(上册)

** python低阶基础100题&#xff08;上册&#xff09; ** 1. 请打印出字符串 Hello World print("Hello World")2. 请打印出字符串 爸爸妈妈&#xff0c;你们辛苦啦 print("爸爸妈妈&#xff0c;你们辛苦啦")3. 请打印出字符串 人生苦短&#xff0c;我…

微信小程序uniapp+django洗脚按摩足浴城消费系统springboot

原生wxml开发对Node、预编译器、webpack支持不好&#xff0c;影响开发效率和工程构建。所以都会用uniapp框架开发 前后端分离&#xff0c;后端给接口和API文档&#xff0c;注重前端,接近原生系统 使用Navicat或者其它工具&#xff0c;在mysql中创建对应名称的数据库&#xff0…