开发人员使用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的文档?也许有人在它作为原生特征进入之前,正在制作像小部件一样的东西。
答案 0 :(得分:14)
小部件不是Qt 5功能。他们从第1天开始就在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