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

时间:2013-10-31 16:11:46

标签: c++ qt qt5

我正在尝试将一个简单的项目迁移到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. 打开项目,在修复了一些初始错误后,弹出这个错误。

4 个答案:

答案 0 :(得分:5)

最终对我有用的是删除Debug和Release构建文件夹。奇怪的是我最初没有复制它们,所以我不知道为什么它们在首次创建后有助于删除它们。

但如果有人遇到此问题,请尝试删除Debug和Release文件夹以及.user文件。这应该迫使Qt Creator重新配置你的项目。

答案 1 :(得分:1)

当我使用cmake而不是qmake构建我的项目时出现此错误, 我通过添加:

在cmake中解决了它
FILE(GLOB UIs *.ui)
# to generate header files for .ui files
qt5_wrap_ui(UI_HEADERS  ${UIs})

答案 2 :(得分:1)

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

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})

答案 3 :(得分:1)

这是一个非常奇怪且耐心的测试错误,几天前我的工作代码开始显示此错误时也发生在我身上,我不确定,但对我而言,这是由于我的mainwindow.ui和mainwindow.qrc未编译,因此我采取以下步骤

  1. 编译了mainwindow.ui(在解决方案资源管理器中右键单击mainwindow.ui文件,然后选择compile),它给出了一些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
  2. 再次编译这两个文件并再次构建代码
  3. 没有错误。