QT:未生成ui_ *文件

时间:2015-05-22 12:32:49

标签: c++ qt user-interface makefile qmake

我知道这是很多用户已经触及过的话题,但我找不到有效的解决方案;我有两个用QtDesigner创建的表单文件:

interfaccia_test.ui interfaccia.ui

我启动qmake -project命令获取以下.pro文件:

TEMPLATE = app
TARGET = qtgeo
INCLUDEPATH += . include

# Input
HEADERS += interfaccia.h include/localizzazione.hpp
FORMS += interfaccia.ui interfaccia_test.ui
SOURCES += interfaccia.cpp main.cpp src/localizzazione.cpp
src/SimpleSIFT.cpp

所以我提供了qmake命令,但它并没有像我预期的那样生成ui_interfaccia.hui_interfaccia_test.h;然后我尝试make我的项目,我有

interfaccia.h:19:28: fatal error: ui_interfaccia.h: File o directory not found
#include "ui_interfaccia.h"
                        ^

interfaccia.h我的文件使用我制作的GUI。

1 个答案:

答案 0 :(得分:3)

对于任何给定的项目,您应该只使用qmake -project 一次。如果您有一堆文件并希望获得项目模板,那么它就是一个起点。然后,这个模板将被人类修改 - 你。

构建基于qmake的Qt项目的常规方法是:

qmake
make

ui_xxx.h文件由make生成,而不是qmake。以下列出了各种工具的功能:

  • qmake -project生成.pro文件模板供您修改以适应项目。在您的项目开始之后,最终用户或您不应该使用它。确保.pro文件保持最新状态是您的工作。
  • qmakecmake生成构建系统的makefile。
  • makeninja构建项目,生成所有其他文件。

还有两点:

  1. 如果您已经包含了无法生成的文件,则qmake无法生成ui_xxx.h文件。因此,例如,如果它生成了一个名为ui_Interfaccia.h的文件,但您已包含ui_interfaccia.h,那么该文件的名称​​也不会生成具有正确名称的文件。

    即使您在不区分大小写的操作系统/文件系统上构建所有内容,这也很重要。

  2. 您包含错误名称的文件。正确的名称是ui_ClassName.h,其中ClassName是.ui文件中的类名(查看前几行),具有相同的大小写。