Подтвердить что ты не робот

Как проверить QT_VERSION на включение другого заголовка?

Qt4 и Qt5 имеют разную организацию файлов заголовков. Поэтому мне нужно проверить версию qt, чтобы включить разные вещи, например:

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

Однако, похоже, это не работает. QT_VERSION не определен. Как я могу решить эту проблему?

4b9b3361

Ответ 1

Как отметил @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

Ответ 2

Как только вы включите <QtGlobal>, вы можете проверить это с помощью макросов:

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

Это то же самое, что и @Javier, просто другой, более читаемый для меня синтаксис

Ответ 3

может использоваться как

#if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0))