【问题标题】:ui header file (ui_name.h) not found找不到 ui 头文件 (ui_name.h)
【发布时间】:2013-12-14 13:23:39
【问题描述】:

我已创建表单,将其保存在项目目录中。现在我想添加一些代码。 所以,我创建了头文件:

#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 创建者查看 ui_sortdialog.h,例如,i 可以查看“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"
                       ^

【问题讨论】:

  • 你有没有像FORMS += myform.ui一样把你的ui文件添加到项目中?

标签: c++ qt


【解决方案1】:

您创建了一个名为 sortdialog 的表单,对吧? 如果您使用 Qt Creator 完成此操作,则应该将以下行添加到项目的 .pro 文件中:

FORMS += sortdialog.ui

如果没有此行,请将其添加到 .pro 文件中。

当一个项目有 .ui 文件时,一个名为 uic 的命令会作为构建过程的一部分被调用。这个 uic(“ui 编译器”)负责生成 ui_sortdialog.h,在你的情况下。

您很少需要直接调用它,在 make 之前运行 qmake 应该会为您完成(如果前面提到的 FORMS 行在您的 .pro 文件中)。

【讨论】:

  • 如何查看uic生成的ui头文件。我的意思是,文件保存在哪里?
【解决方案2】:

当构建目录与*.pro 文件位于同一文件夹时,Qt 有时会遇到困难。

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

以下目录结构容易出错:

MyProj/proj.pro
我的项目/构建/

下面的目录结构可以避免这个问题:

MyProj/proj.pro
MyProjBuild/

【讨论】:

    【解决方案3】:

    我遇到了这个问题。 这是我必须解决的问题: 确保 sortdialog.cpp 和 sortdialog.ui both 在 pro 文件中的相应部分中以适当的大小写(大小写与文件名完全相同)。

    【讨论】:

      【解决方案4】:

      对于没有.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} 生成。资料来源:

      【讨论】:

        猜你喜欢
        • 2012-08-27
        • 2013-07-23
        • 1970-01-01
        • 2016-03-31
        • 2021-02-02
        • 2015-04-28
        • 2016-01-01
        • 2014-06-13
        相关资源
        最近更新 更多