VS2019现有项目添加Qt界面

2023-11-15

目录

Qt安装教程

Qt下载

Qt安装

VS Qt插件

配置Qt插件

配置包含目录及链接器

添加QT界面

添加UI界面

配置文件属性

编译UI文件

添加.h和.cpp文件

简单运行测试

双击ui文件打开Qt Designer闪退问题  

         与VS+Qt创建新项目和QtCreater创建项目不同,在VS现有项目中添加Qt界面比较复杂,笔者测试好久才成功添加,这里提供方法供参考。

Qt安装教程

Qt下载

Qt安装

注意,没有Qt账号请在电脑断网情况下安装。(安装时间较长)

  • 运行qt-opensource-windows-x86-5.14.2.exe,点击next,我的安装路径为C:\Qt\Qt5.14.2,这里选择组件MSVC 2017 32-bitMSVC 2017 64-bit
  • 勾选许可协议,点击下一步->安装即可。

VS Qt插件

打开VS2019,点击扩展->管理拓展->联机->搜索Qt,下载并安装。安装完成后需要重启VS。注意关闭Qt插件的自动更新功能。

配置Qt插件

进人VS2019后,在扩展下面选择Qt VS Tools->Qt Options,然后进行qt配置:

选择Qt安装目录下路径 “C:\Qt\Qt5.14.2\5.14.2\msvc2017_64“即可。

配置包含目录及链接器

VC++目录->包含目录 添加

C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\include

库目录下添加

C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\lib

链接器->输入->附加依赖项中添加下面项

Qt5Widgetsd.lib

Qt5Widgets.lib

Qt5Guid.lib

Qt5Gui.lib

Qt5Cored.lib

Qt5Core.lib

添加QT界面

添加UI界面

鼠标右键项目ocr_system,点击添加->新建项,Visual C++->Qt->Qt MainWindow From File,点击添加

配置文件属性

右键点击刚添加的 MainWindow.ui 文件,选择属性,配置和平台为Releasex64,项类型选择自定义生成工具,点击应用,左侧会生成自定义生成工具选项,界面如下:

  • 命令行输入:
"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"
  • 说明输入:
    Uic%27ing %(Identity)...
  • 输出
    .\GeneratedFiles\ui_%(Filename).h;%(Outputs)
  • 附加依赖项
    $(QTDIR)\bin\uic.exe;%(AdditionalInputs)
  • 连接对象选择

视图->其他窗口->属性管理器,右键ocr_system选项Release | x64添加新项目属性表,这里命名为”PolarNormalCollectorConfigurest.props”

ocr_system->Release | x64->PolarNormalCollectorConfigurest.props->属性->用户宏->添加用户宏 ,名称:QTDIR,值:C:\Qt\Qt5.14.2\5.14.2\msvc2017_64

编译UI文件

右键ui文件,选择编译,你会发现在路径..\build\GeneratedFiles下生成ui_MainWindow.h文件,右键项目选择添加->现有项->.\GeneratedFiles\ui_MainWindow.h,里面是UI界面控件的定义声明。

右键ui_MainWindow.h,选择属性,配置和平台为Releasex64,项类型选择自定义生成工具,点击应用,左侧会生成自定义生成工具选项

  • 命令行输入:
"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\moc_%(Filename).cpp"
  • 说明 输入:
    Moc%27ing %(Identity)...
  • 输出
    .\GeneratedFiles\moc_%(Filename).cpp
  • 附加依赖项
    $(QTDIR)\bin\moc.exe;%(FullPath)
  • 连接对象:

右键ui_MainWindow.h,选择编译,你会发现在路径..\build\GeneratedFiles下生成moc_ui_MainWindow.cpp文件,右键项目选择添加->现有项->.\GeneratedFiles\moc_ui_MainWindow.cpp,

添加.h和.cpp文件

右键项目选择添加新建项,我这里添加了PaddleOCR.h和PaddleOCR.cpp,用于Qt界面操作。

同理,PaddleOCR.h也要进行 选择属性,配置和平台为Releasex64,项类型选择自定义生成工具,点击应用,左侧会生成自定义生成工具选项

  • 命令行输入:
    "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\moc_%(Filename).cpp"
  • 说明 输入:
    Moc%27ing %(Identity)...
  • 输出
    .\GeneratedFiles\moc_%(Filename).cpp
  • 附加依赖项
  • $(QTDIR)\bin\moc.exe;%(FullPath)
  • 连接对象:

右键PaddleOCR.h,选择编译,你会发现在路径..\build\GeneratedFiles下生成moc_ui_MainWindow.cpp文件,右键项目选择添加->现有项->.\GeneratedFiles\moc_PaddleOCR.cpp,

将自动生成的头文件与.cpp文件添加到项目中来,如下图所示

接下来就可以在UI界面添加控件,在PaddleOCR.h和PaddleOCR.cpp中编代码运行程序了。

注意,所有继承QObject的头文件都需要配置moc进行生成可执行文件并添加到项目中,否则的话会如下报错

简单运行测试

这里笔者测试让UI界面运行出来即可

main函数里原来的PaddleOCR识别代码注释掉,在PaddleOCR.cpp文件中进行OCR识别,

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    QtOCR w;
    w.show();
    return a.exec();
}

这里我在另一个VS项目中测试成功,注意在.exe所在文件目录下复制以下dll文件

Qt5Widgetsd.dll Qt5Guid.dll Qt5Cored.dll

遇到的问题

双击ui文件打开Qt Designer闪退问题

解决:ui界面右键,进入“打开方式”,找到Qt安装路径下的designer.exe并点击(我的路径为C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin\designer.exe)添加,之后将其设为默认值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2019现有项目添加Qt界面 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • chromedp模拟键盘回车事件

    chromedp 的 SendKeys 可以模拟各种键盘事件 并且支持组合使用 假设以下场景 有一个输入框 我们想模拟键盘输入内容并回车
  • Vuforia VirtualButtons 虚拟按键

    Vuforia VirtualButtons 虚拟按键 注意 1 不介意使用Unity自带的Vuforia 引擎 否则下载商场里的示例项目时可能会因为版本问题产生报错 推荐直接从商店下载示例的引擎使用 2 不推荐下载目前最新9 2版引擎 导
  • Matlab 函数进阶:使用匿名函数和内嵌函数处理多变量传递问题(Matlab 7.0以上)

    from http asc 2dark org node 70 Matlab 函数进阶 使用匿名函数 Anonymous Function 和内嵌函数 Nested Function 处理多变量传递问题 Matlab 7 0以上 问题 有一
  • WPF工控组态软件之温度计

    WPF以其丰富灵活的控件样式设计 相较于WinForm而言 一直是工控组态软件的宠儿 经过前两文章的学习 已经对WPF开发工控组态软件有了一个基本的了解 今天继续学习温度计的开发 仅供学习分享使用 如有不足之处 还请指正 涉及知识点 在本示
  • NotePad++遇到电脑重启或者突然崩溃,已经打开的文件信息和未保存的文件没了怎么办?

    1 崩溃前打开的文件列表信息可以在如下文件中找到 C Users 你当前用户的用户名 AppData Roaming Notepad session xml 里面存放了文件打开列表 2 崩溃前未保存的文件可以在如下路径进行恢复 C User
  • Node.js Buffer的简单使用

    Node js 目前支持的字符编码包括 ascii 仅支持 7 位 ASCII 数据 如果设置去掉高位的话 这种编码是非常快的 utf8 多字节编码的 Unicode 字符 许多网页和其他文档格式都使用 UTF 8 utf16le 2 或
  • JVM 垃圾回收

    JVM 垃圾回收 写在前面 本节常见面试题 问题答案在文中都有提到 如何判断对象是否死亡 两种方法 简单的介绍一下强引用 软引用 弱引用 虚引用 虚引用与软引用和弱引用的区别 使用软引用能带来的好处 如何判断一个常量是废弃常量 如何判断一个
  • Linux基线检查( 一)

    什么是基线 即安全基线配置 诸如操作系统 中间件和数据库的一个整体配置 这个版本中各项配置都符合安全方面的标准 比如在系统安装后需要按安全基线标准 将新机器中各项配置调整到一个安全 高效 合理的数值 风险分类 系统 等保三级 CentOS
  • linux 普通用户 Cannot create VM thread. Out of system resources.

    在linux系统下开发 使用普通用户进行应用部署 出现JVM内存问题如下 Error occurred during initialization of VM Cannot create VM thread Out of system re
  • Basic Level 1023 组个最小数 (20分)

    题目 给定数字 0 9 各若干个 你可以以任意顺序排列这些数字 但必须全部使用 目标是使得最后得到的数尽可能小 注意 0 不能做首位 例如 给定两个 0 两个 1 三个 5 一个 8 我们得到的最小的数就是 10015558 现给定数字 请
  • Python学习笔记第六十四天(Matplotlib 网格线)

    Python学习笔记第六十四天 Matplotlib 网格线 普通网格线 样式网格线 后记 Matplotlib 网格线 我们可以使用 pyplot 中的 grid 方法来设置图表中的网格线 grid 方法语法格式如下 matplotlib
  • 系统架构设计师(第二版)学习笔记----信息系统基础

    原文链接 系统架构设计师 第二版 学习笔记 信息系统基础 文章目录 一 信息系统概述 1 1 信息系统的5个基本功能 1 2 信息系统发展阶段 1 3 初始阶段的主要特点 1 4 传播阶段的主要特点 1 5 控制阶段的主要特点 1 6 集成
  • lock_guard和unique_lock

    锁 锁用来在多线程访问同一个资源时防止数据竞险 保证数据的一致性访问 多线程本来就是为了提高效率和响应速度 但锁的使用又限制了多线程的并行执行 这会降低效率 但为了保证数据正确 不得不使用锁 它们就是这样纠缠 本文主要讨论 c 11 中的两
  • 网络安全工程师的职责 103.219.28.X

    网络安全工程师是专门从事网络安全防护 攻击和事故处理等工作的技术人员 其主要职责包括 评估和分析网络漏洞和威胁情况 制定网络安全策略和方案 开发和实施安全解决方案 监控和维护网络安全系统 应对网络攻击和事故等 他们需要掌握网络安全技术 网络
  • DateTime关于时区的学习

    一 时区的概念 首先来了解时区的概念 为了解决世界不同各地在时间上的差异 人们定义了时区 时区是地球上的区域使用同一个时间定义 人们将时区分为24个 它们是中时区 零时区 东1 12区 西1 12区 每个时区横跨经度15度 时间正好是1小时
  • SQL Server临时表

    创建临时表 方法一 create table 临时表名 字段1 约束条件 字段2 约束条件 create table 临时表名 字段1 约束条件 字段2 约束条件 方法二 select into 临时表名 from 你的表 select i
  • 【JAVA设计模式】之桥接模式(BridgePattern)

    桥接模式的作用是将两样东西连接起来 比如桥梁把河的两岸连接起来 桥接模式把 类的功能层次结构 和 类的实现层次结构 连接起来 类的层次结构 类的功能层次 父类通过定义抽象方法来定义接口API 类的实现层次 子类通过实现具体方法来实现接口AP
  • FP64、FP32、FP16、FP8简介

    目录 1 单精度浮点数FP32的表示 2 半精度浮点数FP16的表示 3 双精度浮点数FP64的表示 4 FP8 5 写在最后 1 单精度浮点数FP32的表示 浮点数由三部分组成 符号位 指数部分 尾数部分 以单精度浮点数为例 如图所示 符
  • 好多粉使用百度OCPC api提交后如何手动选择有效咨询回传?

    推广每天会有复制 虽然绝大部分是正常的数据 但也有可能有的是同行刷的 有的是没有添加成功的数据 如果不处理 会造成无效数据上传 只能投放的AI可能就要被某些别有用心的人玩坏了 所以我们为解决这个痛点 开发了手动回传功能 并且系统自动帮你标识
  • VS2019现有项目添加Qt界面

    目录 Qt安装教程 Qt下载 Qt安装 VS Qt插件 配置Qt插件 配置包含目录及链接器 添加QT界面 添加UI界面 配置文件属性 编译UI文件 添加 h和 cpp文件 简单运行测试 双击ui文件打开Qt Designer闪退问题 与VS