#include <qtwidgets>在Qt 4 </qtwidgets>中无效

时间:2014-06-01 12:19:49

标签: qt qt5

开发人员使用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的文档?也许有人在它作为原生特征进入之前,正在制作像小部件一样的东西。

1 个答案:

答案 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仅链接coregui模块,但正如我刚才所说,这不会为Qt 5带来小部件:

greaterThan(QT_MAJOR_VERSION, 4):QT += widgets