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

问题描述 投票:0回答:2

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

#if QT_VERSION >= 0x050000
    #include <QtMultimedia>
#endif

但是,这似乎行不通。 QT_VERSION 尚未定义。我该如何解决这个问题?

c++ qt
2个回答
96
投票

一旦包含

<QtGlobal>
,您就可以使用宏进行检查:

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

与@Javier建议的相同,只是不同的,对我来说更易读的语法


41
投票

正如@Tay2510评论的那样,

QT_VERSION
<QtGlobal>
内部声明。因此,您必须在版本相关的
预处理器指令
之前键入
#include <QtGlobal>
或包含 <QtGlobal> 的其他标头。

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

这是代码示例:

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

请记住,qmake 项目还应该处理版本变化。 以下是使用QT多媒体库时应进行的更改

.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
© www.soinside.com 2019 - 2024. All rights reserved.