Qt4和Qt5具有不同的头文件组织。所以我需要检查qt版本以包含不同的内容,例如:
#if QT_VERSION >= 0x050000
#include <QtMultimedia>
#endif
然而,这似乎不起作用。 QT_VERSION尚未定义。我该如何解决这个问题?
答案 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