我知道网上有一些类似的问题,但不幸的是,正如标题所示,这些问题都没有帮助我解决这个看起来相对简单的问题。
我设置了一个出现问题的最小Qt项目:
├── main.cpp
├── mainwindow.ui
└── qt.promain.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的安装被破坏了,那会很奇怪-我正在运行Arch Linux,并从默认存储库获得了Qt SDK。
非常感谢您在建议方面的帮助!
发布于 2016-07-24 18:00:12
假设您使用的是QT-5:
如果您希望使用链接QMainWindow或其他QT小部件的UI元素,则通常需要在项目配置中启用小部件:
QT += widgets这将激活表单内容的处理,如示例中的mainwindow.ui,并使您的代码链接到正确的库。
另请参阅此处:http://doc.qt.io/qt-5/qtwidgets-index.html
https://stackoverflow.com/questions/38549747
复制相似问题