#include QtWebKit(Qt4)或QtWebKitWidgets(Qt <5.6)或QtWebEngineWidgets(Qt> = 5.6)

时间:2016-05-19 16:25:20

标签: c++ qt qt5 c++14 qt5.6

我正在开发的项目可能是在Q4 / 5 / 5.6环境下开发的,考虑到Qt与网络工具包相关的更改(用于通过javascript界面​​显示谷歌地图),这会造成一些困难)。

我设法通过以下方式在项目文件中添加了正确的模块:

greaterThan(QT_MAJOR_VERSION, 4) {
    greaterThan(QT_MINOR_VERSION, 5) {
        message("Qt5.6")
        QT += widgets webenginewidgets #include <QtWebEngineWidgets> for Qt5.6 in map.cpp
    } else {
        message("Qt5")
        QT += widgets webkitwidgets #include <QtWebKitWidgets> for Qt5 in map.cpp
    }
} else {
    message("Qt4")
  QT += webkit #include <QtWebKit> for Qt4 in map.cpp
}

问题是每个模块都有不同的#include

#include QtWebKit           // for Qt4
#include QtWebKitWidgets    // for Qt5 lower then 5.6
#include QtWebEngineWidgets // for Qt5.6

是否可以使代码具有可移植性,以便能够发现应该执行哪个#include

1 个答案:

答案 0 :(得分:1)

您可以使用类似

的内容
#include <QtGlobal>

#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
#include <QtWebEngineWidgets>
#elif (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
#include <QtWebKitWidgets>
#else
...
#endif