#include 在<QtWidgets>Qt 4中不起作用



一个开发人员使用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默认只链接coregui模块,但正如我刚才所说,这不会给你带来Qt 5中的小部件:

greaterThan(QT_MAJOR_VERSION, 4):QT += widgets

相关内容

  • 没有找到相关文章

最新更新