Qt 5 迁移 - 无法打开包含文件:'ui_mainwindow.h'

Qt 5 migration - Cannot open include file: 'ui_mainwindow.h'

本文关键字:ui mainwindow 文件 包含 迁移 Qt      更新时间:2023-10-16

>我正在尝试将一个简单的项目迁移到Qt 5。该项目最初是为Qt 4编写的,在那里编译得很好。

但是,在使用Qt 5进行编译时,我收到此错误:

error: C1083: Cannot open include file: 'ui_mainwindow.h': No such file or directory

现在我知道编译时应该自动生成ui_mainwindow.h,我已经检查过,使用 Qt 5 编译时没有生成它。


注意

这也会发生在新创建的项目中。

重现步骤:

  1. 在Qt Creator + Qt 4下创建新项目。
  2. 将项目复制到安装了Qt Creator + Qt 5的另一台机器。
  3. 打开项目,修复一些初始错误后,弹出此错误。
最终对

我有用的是删除调试和发布构建文件夹。奇怪的是,我最初没有复制它们,所以我不知道为什么在首次创建它们后删除它们会有所帮助。

但是,如果有人遇到此问题,请尝试删除"调试"和"发布"文件夹以及 .user 文件。这应该会迫使Qt Creator重新配置您的项目。

当我使用 cmake 而不是 qmake 来构建我的项目时,我遇到了这个错误,我通过添加以下内容在 cmake 中解决了它:

FILE(GLOB UIs *.ui)
# to generate header files for .ui files
qt5_wrap_ui(UI_HEADERS  ${UIs})

我遇到了同样的问题;解决了清理项目的问题(从Qt->构建)并添加:

SET(CMAKE_INCLUDE_CURRENT_DIR ON)

例如,这是我的CMakeLists.txt运行良好:

#Specify the minimum version of CMake (3.1 is currently recommended by Qt)
cmake_minimum_required(VERSION 3.1)
# Specify project title
project(challenge_MarcoRuiz)
# To automatically run MOC when building (Meta Object Compiler)
set(CMAKE_AUTOMOC ON)
# To automatically run UIC when building (User Interface Compiler)
set(CMAKE_AUTOUIC ON)
# To automatically run RCC when building (Resource Compiler)
set(CMAKE_AUTORCC ON)
# Specify OpenCV folder, and take care of dependencies and includes
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# Take care of Qt dependencies
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
## 
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
# add required source, header, ui and resource files
add_executable(${PROJECT_NAME} "main.cpp" "mainwindow.h" "mainwindow.cpp" "mainwindow.ui" ${UI_HEADERS})
# link required libs
target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets ${OpenCV_LIBS} ${UI_HEADERS})

嗯,这是非常奇怪和耐心的测试错误,几天前当我的工作代码开始显示此错误时,它也发生在我身上,不确定,但对我来说,这是由于我的主窗口.ui和主窗口.qrc没有编译,所以我采取以下步骤

  1. 编译了 mainwindow.ui (右键单击解决方案资源管理器中的 mainwindow.ui 文件并选择编译),它给出了一些
  2. C:\Qt1\5.9\msvc2017_64\lib\rcc.exe该目标中缺少的东西,所以我转到 C:\Qt1\5.9\msvc2015_64\bin,复制并粘贴 rcc.exe从 C:\Qt1\5.9\msvc2015_64\bin 到 C:\Qt1\5.9\msvc2017_64\lib再次
  3. 编译这两个文件并再次构建代码
  4. 没有错误就是这样.