如何检查QT_VERSION以包含不同的标头?

时间:2014-07-22 23:35:25

标签: c++ qt

Qt4和Qt5具有不同的头文件组织。所以我需要检查qt版本以包含不同的内容,例如:

#if QT_VERSION >= 0x050000
    #include <QtMultimedia>
#endif
然而,这似乎不起作用。 QT_VERSION尚未定义。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:41)

只要您添加<QtGlobal>,就可以使用宏检查:

#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)

它与@Javier建议的相同,只是一种不同的,对我来说更具可读性的语法

答案 1 :(得分:22)

在@ Tay2510评论中,QT_VERSION<QtGlobal>内声明。因此,您必须在依赖于版本preprocessor directives之前键入#include <QtGlobal>或包含<QtGlobal>的其他标头。

<QObject><QCoreApplication>也可用于访问QT_VERSION

以下是代码示例:

#include <QtGlobal>
#if QT_VERSION >= 0x050000
    #include <QApplication>
#else
    #include <QtGui/QApplication>
#endif

请记住,qmake项目还应该处理版本变体。 Here are changes that should be done when using the QT multimedia library

.pro文件应该类似于:

QT += core gui

greaterThan(4, QT_MAJOR_VERSION): QT += widgets multimedia
lessThan(5, QT_MAJOR_VERSION): CONFIG += mobility
lessThan(5, QT_MAJOR_VERSION): MOBILITY += multimedia