【问题标题】:Qt 5 migration - Cannot open include file: 'ui_mainwindow.h'Qt 5 迁移 - 无法打开包含文件:'ui_mainwindow.h'
【发布时间】:2013-10-31 16:11:46
【问题描述】:

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

【问题讨论】:

  • 确保您正在添加小部件模块。在你的 .pro 中有这样的东西:greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  • 查看 qmake 生成的 Makefile。您应该会看到与此类似的部分:compiler_uic_clean: -$(DEL_FILE) ui_mainwindow.h ui_mainwindow.h: ../widgettest/mainwindow.ui /Users/kevin/Development/Qt5.1.1/5.1.1/clang_64/bin/uic ../widgettest/mainwindow.ui -o ui_mainwindow.h 它引用的 uic 可执行文件是否确实存在?
  • 清除您的项目并构建它。你看到uic 被调用了吗?你能发布你的.pro 文件吗?
  • 一个可能的问题是Clean AllRebuild All 不会删除您的Makefile。尝试手动删除它(或更好:删除整个构建文件夹)
  • @GuilhermeBernal 好的,这很奇怪,在我现在删除调试和发布文件夹后它起作用了。但由于我一开始没有将它们复制到另一台机器(使用 Qt 5 的机器)上,这非常非常奇怪为什么它现在有帮助。感谢您的帮助。

标签: c++ qt qt5


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题;解决了清理项目(来自 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})
      

      【讨论】:

        【解决方案4】:

        嗯,这是一个非常奇怪和耐心的测试错误,几天前我的工作代码开始显示这个错误时也发生了,我不确定,但对我来说这是由于我的 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. 没有错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-07
          • 1970-01-01
          相关资源
          最近更新 更多