首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#包括不在Qt 4中工作的<QtWidgets>

#包括不在Qt 4中工作的<QtWidgets>
EN

Stack Overflow用户
提问于 2014-06-01 12:19:48
回答 1查看 9.3K关注 0票数 4

一位开发人员使用QtWidgets向我们的软件添加了一个特性,据我所知,这是一个QT5特性。问题是,我们的软件仍然是为QT4设计的,我们还不能使用最新的QT版本。这个新特性在QT5中编译时效果很好,但是当试图使用QT4.8.5编译时会出现以下错误。

代码语言:javascript
复制
src\qt\snapwidget.h:3: error: QtWidgets: No such file or directory
#include <QtWidgets>
                   ^

是否有关于将QtWidgets移植到较旧版本的QT的文档?也许有人在将小部件作为一个本地特性引入之前就已经在做一些类似的事情了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-02 21:01:51

小部件不是Qt5特性。他们从第一天起就在Qt里了。

一般来说,我建议不要使用这样的每个模块包括。它们将为给定模块添加所有包含,大大提高了您的编译时间。相反,您可以使用

代码语言:javascript
复制
#include <QClass>

这也同样有效,只需要对我下面提到的.pro文件进行调整(一个地方,而不是修改所有源文件)。

您的问题是Qt 4中没有"QtWidgets“模块,Qt 4中的小部件位于"gui”模块中。

因此,Qt 4中的“等效”行是

代码语言:javascript
复制
#include <QtGui>

您可以使用QT_VERSION使您的C++代码在Qt 4和5中都能工作:

代码语言:javascript
复制
#include <QtGlobal>
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
#  include <QtWidgets>
#else
#  include <QtGui>
#endif

.pro文件中添加一个类似的逻辑,用于针对widgets模块进行链接。默认情况下,Qt4和Qt5都只链接到coregui模块,但正如我刚才所说的,这不会在Qt 5中为您带来小部件:

代码语言:javascript
复制
greaterThan(QT_MAJOR_VERSION, 4):QT += widgets
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23979798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档