我知道在线上有两个类似问题的问题,但不幸的是,正如标题所示,这些问题都没有一个帮助我解决了这个看起来相对简单的问题。
我设置了一个最小的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 Form。
现在如果我跑步
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。
非常感谢您的建议!
假设您正在使用QT-5:
如果要使用链接到QMainWindow或其他QT小部件的UI元素,则通常需要在项目配置中启用小部件:
QT += widgets
然后,这将激活对示例中的mainMS.window.ui之类的FORMS内容的处理,并导致您的代码与正确的库链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句