qmake 不调用 uic
Posted
技术标签:
【中文标题】qmake 不调用 uic【英文标题】:qmake doesn't invoke uic 【发布时间】:2016-07-24 07:33:04 【问题描述】:我知道网上有几个关于类似问题的问题,但不幸的是,它们都没有帮助我解决这个看起来相对简单的问题,正如标题所示。
我设置了一个出现问题的最小 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
然后在执行 make 时会创建一个 Makefile 导致此错误:
[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。
非常感谢您的建议!
【问题讨论】:
尝试包含mainwindow.ui
而不是ui_mainwindow.ui
感谢您的快速回复!不幸的是,它没有用,结果是一样的。没有生成文件,g++ 抛出“没有这样的文件或目录”错误。
@wasthishelpful ,它是 ui_mainwindow.h
。在cpp文件main.cpp
中包含mainwindow.ui
xml文件是不合逻辑的
当然我尝试了使用以 .h 结尾的文件的解决方案,假设 .ui 是一个错字。
【参考方案1】:
假设您使用的是 QT-5:
如果您想使用链接 QMainWindow 或其他 QT 小部件的 UI 元素,您通常需要在项目配置中启用小部件:
QT += widgets
这会激活 FORMS 内容的处理,例如您的示例中的 mainwindow.ui,并导致您的代码与正确的库链接。
参见此处:http://doc.qt.io/qt-5/qtwidgets-index.html
【讨论】:
非常感谢!我在考虑我是否已经尝试过这个解决方案,结果我在另一个项目中写了 Qt += 而不是 QT += 。问题解决了:)以上是关于qmake 不调用 uic的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5 从 pyuic5 转换文件或 uic.loadUi 调用 gui
UICollectionView CompositionalLayout 不调用 UIScrollDelegate