UI头文件(ui_name.h)未找到。

7

我已经创建了表单,并将其保存在项目目录中。现在我想要添加一些代码。 因此,我创建了一个头文件:

#ifndef SORTDIALOG_H
#define SORTDIALOG_H

#include <QtWidgets/QDialog>
#include <QtWidgets/QWidget>


#include "ui_sortdialog.h"


class SortDialog: public QDialog, public Ui::SortDialog
{
    Q_OBJECT
public:
    SortDialog(QWidget *parent=0);
    void setColumnRange(QChar first, QChar last);
}

#endif // SORTDIALOG_H

在编写代码时,Qt Creator会看到ui_sortdialog.h,并且我可以看到“Ui”命名空间。但是当我尝试编译时,编译器会报告找不到ui_sortdialog.h文件。

C:\Qt\Qt5.1.1\Tools\QtCreator\bin\untitled2\sortdialog.h:8: error: ui_sortdialog.h: No such file or directory
 #include "ui_sortdialog.h"
                       ^

1
你是否像这样将你的UI文件添加到项目中:FORMS += myform.ui - vahancho
4个回答

4
您创建了一个名为sortdialog的表单,是吗?如果您是使用Qt Creator创建的,它应该会将以下行添加到项目的.pro文件中:
FORMS += sortdialog.ui

如果没有这样的行,请将其添加到.pro文件中。
当一个项目有.ui文件时,在构建过程中,会调用一个名为uic的命令。这个uic(“ui编译器”)负责生成ui_sortdialog.h,在你的情况下。
你很少需要直接调用它,运行qmake之前运行make就可以了(如果上述FORMS行在你的.pro文件中)。

如何检查由UIC生成的UI头文件。我的意思是,该文件保存在哪里? - jwm

3

对于那些没有 .pro 文件、不使用 qmake,而是使用 cmake 的人:

请按照以下方式操作:

add_executable(myprogram
    gui.cpp
    gui.ui
    main.cpp
)

使用:

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

add_executable(myprogram
    gui.cpp
    gui.ui
    main.cpp
)

或者:

qt5_wrap_cpp(UI_SOURCES
    gui.cpp
)
qt5_wrap_ui(UI_HEADERS
    gui.ui
)
add_executable(myprogram
    main.cpp
    ${UI_SOURCES}
    ${UI_HEADERS}
)

提醒:头文件ui_gui.h将在${CMAKE_CURRENT_BINARY_DIR}处生成。参考资料:


3

在同一文件夹中放置*.pro文件和构建目录时,Qt有时会遇到困难。

我建议确保您的构建目录比项目文件高一级。

以下目录结构容易出错:

MyProj/proj.pro
MyProj/builds/

以下目录结构将避免此问题:

MyProj/proj.pro
MyProjBuild/


1
我有这个问题。 以下是我需要修复的内容: 确保sortdialog.cpp和sortdialog.ui在pro文件中的适当部分,并使用适当的大小写(与文件名完全相同,包括大小写)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接