Qt4 和 Qt5 的头文件组织不同。所以我需要检查qt版本以包含不同的东西,例如:
#if QT_VERSION >= 0x050000
#include <QtMultimedia>
#endif
但是,这似乎行不通。 QT_VERSION 尚未定义。我该如何解决这个问题?
一旦包含
<QtGlobal>
,您就可以使用宏进行检查:
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
与@Javier建议的相同,只是不同的,对我来说更易读的语法
正如@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