一位开发人员使用 QtWidgets 向我们的软件添加了一项功能,据我所知,这是一项 QT5 功能。问题是我们的软件仍然是为 QT4 设计的,我们还不能迁移到最新版本的 QT。新功能在 QT5 中编译时效果很好,但在尝试使用 QT 4.8.5 编译时会出现以下错误。
src\qt\snapwidget.h:3: error: QtWidgets: No such file or directory
#include <QtWidgets>
^
是否有关于将 QtWidgets 反向移植到旧版 QT 的文档?也许有人在作为原生功能进入之前正在制作类似小部件的东西。
最佳答案
小部件不是 Qt 5 功能 .他们从第一天开始就在 Qt 中。
一般来说,我建议不要使用这样的每个模块包含。他们将为给定模块添加所有包含,从而显着提高您的编译时间。相反,您可以使用
#include <QClass>
也可以,并且只需要调整
.pro
我在下面说的文件(一个地方,而不是修改所有源文件)。您的问题是 Qt 4 中没有“QtWidgets”模块。Qt 4 中的小部件位于“gui”模块中。
因此,Qt 4 中的“等价”行是
#include <QtGui>
您可以使用
QT_VERSION
使您的 C++ 代码在 Qt 4 和 5 中都可以工作:#include <QtGlobal>
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
# include <QtWidgets>
#else
# include <QtGui>
#endif
在
.pro
中添加类似的逻辑用于链接 widgets
的文件模块。 Qt 4 和 Qt 5 默认只链接 core
和 gui
模块,但正如我刚才所说,这不会为您带来 Qt 5 中的小部件:greaterThan(QT_MAJOR_VERSION, 4):QT += widgets
关于qt - #include <QtWidgets> 在 Qt 4 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979798/