qmake没有调用uic

时间:2016-07-24 07:33:04

标签: c++ qt makefile qmake

我知道在网上就类似问题提出了几个问题,但遗憾的是,正如标题所示,这些问题都没有帮助我解决这个相对简单的问题。

我设置了一个问题发生的最小Qt项目:

├── main.cpp
├── mainwindow.ui
└── qt.pro

main.cpp中:

#include <QtWidgets/QtWidgets>
#include "ui_mainwindow.h"

int main () {
    return 0;
}

qt.pro:

TEMPLATE = app
TARGET = qt-qmake-uic-problem
INCLUDEPATH += .

# Input
FORMS += mainwindow.ui
SOURCES += main.cpp

文件mainwindow.ui是Qt Creator提供的默认MainWindow表单。

现在如果我跑

qmake qt.pro

然后创建一个Makefile,在make执行时导致此错误:

[developer@kdb qt-qmake-uic-problem]$ make
g++ -c -pipe -O2 -march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/qt -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o main.o main.cpp
main.cpp:2:28: fatal error: ui_mainwindow.ui: No such file or directory
 #include "ui_mainwindow.h"
                            ^
compilation terminated.
make: *** [Makefile:298: main.o] Error 1

根据我的最佳知识,ui_mainwindow.h必须由qmake或Makefile生成 - 而不是由我自己手动调用uic。我必须注意到类似的事情也发生在moc上并进行我的研究我还没有在文档和类似的问题中找到解释,尽管如果这个qmake的安装被破坏会很奇怪 - 我&#39;运行Arch Linux并从默认存储库获取Qt SDK。

非常感谢你的建议帮助!

1 个答案:

答案 0 :(得分:1)

假设您使用的是QT-5:

如果要使用UI元素链接QMainWindow或其他QT小部件,则需要在项目配置中启用小部件:

QT += widgets

然后在您的示例中激活FORMS内容的处理,例如mainwindow.ui,并使您的代码与正确的库链接。

另见:http://doc.qt.io/qt-5/qtwidgets-index.html