背景

  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方便的。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐