Qt Visual Studio添加Qt ui和编译注意事项

背景

  1. 工程中需要新的界面
  2. VS中新建Qt的ui文件,然后需要生成对应的.cpp 和 .h 文件

新建Widget 对象

新建Qt Widget Class

#
生成对应的三个文件.ui, xxx. cpp, xxx.h
在这里插入图片描述
但是此时在QtWidgetsTestClass.h 里面,包含了#include “ui_QtWidgetsTestClass.h”。 会提示找不到该文件。该文件的生成,需要使用到Qt的uic.exe程序

UIC程序生成ui_xxxx.h文件

1.通过配置ui_QtWidgetsTestClass.ui的属性,
2. 编译工程
3. 生成ui_QtWidgetsTestClass.h
4. 将ui_QtWidgetsTestClass.h 添加到工程中
在这里插入图片描述

命令行: ui.exe路径  xxx.ui -o ui_xxx.h
说明: UIC xxx.ui
输出: ui_xxx.h;%(Outputs)
附加依赖项: xxx.ui; ui.exe path; %(ApplicationalInputs)

编译出错

找不到moc_xxx , 在之前创建QtWidgetClass时,选择了Q_OBJECT选项,因此,这里需要用到Qt的moc.exe工具,生成moc_xxxx.cpp文件。这里是moc_QtWidgetsTestClass.cpp文件

设置QtWidgetsTestClass.h的属性

设置属性

  1. 编译工程,生成moc_QtWidgetsTestClass.cpp文件
  2. 将该文件拷贝至Debug目录下
  3. 再次编译工程

在生成的cpp和h文件中添加信号量

在QtWidgetsTestClass.h 中添加信号量时, 会重新生成一下moc_QtWidgetsTestClass.cpp文件,这时候需要清理下工程,再重新编译。否则会识别不到这个信号量而报错。

总结

  1. 使用VS添加新的UI对象感觉是比较麻烦的,需要3个步骤
  2. 步骤一: 通过向导生成ui文件, xxx.cpp 和 xxx.h 三个文件
  3. 步骤二: 通过ui文件生成ui_xxxx.h 头文件
  4. 步骤三: 通过xxx.h 生成moc_xxx.cpp文件
  5. 将moc_xxx.cpp文件拷贝到debug目录下 (我的VS工程下的debug目录下保存了大量的moc_xxx.cpp文件, 该工程最早也是从Qt工程转变而来的)

综上,在添加新的ui的时候,从ui到代码这一步还是没有Qt creator方便的。

Visual Studio (VS) 2019中的UI Compiler(uic)主要用于创建Qt应用程序的界面文件(`.ui`)到源代码(`.cpp` `.h`)的转换过程。Qt的`.ui` 文件是基于XML的界面设计文件,而uic工具将其编译为可以直接集成到项目中的C++代码。 使用VS2019中的uic的步骤如下: 1. **安装Qt库**:确保已经安装了Qt版本5.x或更高,因为VS2019默认支持的是Qt 5。如果没有安装,可以从Qt官方网站下载并安装。 2. **打开VS2019**:启动Visual Studio,选择"File" -> "New" -> "Project"。 3. **添加Qt支持**:在项目模板中找到"Qt Widgets Application"或"Qt Console Application",选择并创建一个新的项目。 4. **配置Qt**:在项目的属性页(Properties)中,确保选中"Qt Quick Controls 2"或其他所需的模块,并配置Qt路径。 5. **生成`.ui`文件**:在项目中右键点击要使用的界面设计文件(通常以`.ui`扩展名),选择"Open With" -> "Qt Designer" 来编辑。完成设计后,保存文件。 6. **调用uic**:在命令行工具或者在VS的解决方案资源管理器中找到包含`.ui`文件的项目目录,然后运行`uic`工具。例如: ``` uic -o your_ui_file.h your_ui_file.ui ``` 这将会生成对应的`.h`头文件`.cpp`源文件。 7. **集成生成的代码**:在VS项目中,将uic生成的`.cpp``.h`文件添加到工程中,它们会被自动链接到项目的构建过程中。 8. **编译运行**:现在你可以像普通C++代码一样编译运行项目,包含了从`.ui`设计的界面
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值