解决QT+VS中无法打开/无法识别/无法打开/找不到ui_xxx.h文件

问题描述

在Qt+VS开发环境下,经常出现此类问题:
有时候,明明存在ui_xxx.h文件,或者,根本不存在该ui_xxx.h文件,又或者,把对应的xxx.ui从项目中排除后,再添加进项目里面,就提示“无法识别”该ui_xxx.h文件。此时,对项目重新生成,或者重新编译,清理,再build,没有丝毫卵用。。。

解决方法

第一种:若该项目是,从网络下载别人的项目:
首先检查该项目的平台工具集是否与你的vs环境一致,不一致,就改为一致:
右键单击,项目->属性->配置属性->常规—>平台工具集
然后,右键单击xxx.ui,选择“编译”,再build,即可正常识别;

第二种,自己的项目,自己的环境,由于手贱,把xxx.ui从项目中排除后,再添加进项目里面,就提示“无法识别”该ui_xxx.h文件:
右键单击 xxx.ui,选择“属性”,—>配置属性—>自定义生成工具—>常规,修改3个参数:
(具体路径看自己Qt安装目录):
“命令行”:“D:\qt58\5.8\msvc2013_64\bin\uic.exe” -o “.\GeneratedFiles\ui_%(Filename).h” “%(FullPath)”
“输出”:.\GeneratedFiles\ui_%(Filename).h
“附加依赖项”:D:\qt58\5.8\msvc2013_64\bin\uic.exe
之后,再右键单击xxx.ui,选择“编译”,再build,即可正常运行;
具体见附图:
在这里插入图片描述

Qt 使用 CMake 自动管理 UI 设计文件时,它通常会通过 `uic` (User Interface Compiler) 工具将`.ui` 文件转换为 `.h` 和 `.cpp` 文件。生成的 UI 类相关的头文件 (`ui_xxx.h`) 包含了对界面元素的描述,但是要在你的源代码中正常使用这些描述,你需要按照以下步骤操作: 1. **包含头文件**: 在你的 `.cpp` 文件中,确保你包含了 `ui_xxx.h` 文件,比如: ```cpp #include "ui_mainwindow.h" ``` 2. **声明 Q_OBJECT**: 对于 QWidgets 或者 Qt 的其他类,你需要在 `.cpp` 文件开头添加 `Q_OBJECT` 宏,以便链接到 moc 编译器: ```cpp #ifndef MAINWINDOW_H #define MAINWINDOW_H class MainWindow : public QMainWindow { Q_OBJECT //... }; #endif // MAINWINDOW_H ``` 3. **MOC 编译**: Qt 的 Meta Object Compiler (moc) 需要手动运行来处理信号和槽。如果你使用 CMake,确保 MOC 链接规则设置正确。例如,在 CMakeLists.txt 中添加如下内容: ```cmake target_include_directories(your_target_name PRIVATE ${QT_INCLUDE_DIR}) add_executable(your_executable_name src/main.cpp) add_custom_command(TARGET your_executable_name POST_BUILD COMMAND moc ${CMAKE_CURRENT_SOURCE_DIR}/ui_mainwindow.h -o ${CMAKE_CURRENT_BINARY_DIR}/ui_mainwindow.moc) ``` 这里 `your_target_name` 和 `src/main.cpp` 应替换为你实际的项目名和主程序源文件。 4. **连接信号和槽**: 在`.cpp` 文件中,使用 moc 编译后的 `.moc` 文件来连接 UI 元素之间的信号和槽。 如果以上步骤都已完成,但仍然无法识别UI 文件,可能是路径问题、文件名拼写错误,或者是缺少必要的 moc 调用。检查并确认上述每个环节是否正确实施。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值