一个开发人员使用QtWidgets给我们的软件添加了一个特性,据我所知这是一个QT5特性。问题是我们的软件仍然是为QT4设计的,我们还不能转移到最新版本的QT。在QT5中编译时,新特性工作得很好,但在尝试使用QT 4.8.5编译时,会出现以下错误:
srcqtsnapwidget.h:3: error: QtWidgets: No such file or directory
#include <QtWidgets>
^
是否有关于向后移植QtWidgets到旧版本QT的任何文档?也许有人在widget作为原生特性进入市场之前就已经构思出了类似widget的东西。
Widgets不是Qt 5的特性。他们从第1天开始就处于Qt状态。
一般来说,我建议不要使用这样的每个模块包含。它们将为给定模块添加所有包含,从而显著提高编译时间。你可以使用
#include <QClass>
也可以工作,并且只需要调整下面所说的.pro
文件(一个位置,而不是修改所有源文件)。
你的问题是没有"QtWidgets"模块在Qt 4。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