Я пытаюсь скомпилировать проект Qt4 / Symbian в Qt5, сохраняя при этом поддержку Qt4 / Symbian.
В настоящее время MainWindow::setOrientation
автоматически генерируемая функция шаблона доставляет мне неприятности.
Это дает мне эти ошибки компилятора:
error: 'WA_LockPortraitOrientation' is not a member of 'Qt'
error: 'WA_LockLandscapeOrientation' is not a member of 'Qt'
error: 'WA_AutoOrientation' is not a member of 'Qt'
Да, они были удалены в Qt 5, как вы сами отметили.
Причина в том, что это только возможности Symbian, и такие вещи просто смущают пользователей Qt, если они работают только на определенной платформе, особенно если эта платформа даже не поддерживается Qt 5 по своей сути.
Соответствующее изменение геррита можно найти здесь:
https://codereview.qt-project.org/#change,11280
Вам нужно изменить эти строки
#if QT_VERSION < 0x040702
// Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes
к этим:
#if (QT_VERSION < QT_VERSION_CHECK(4, 7, 2)) || (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
// Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes
// Qt 5 has removed them.
Хороший способ условно разрешить определенные функции, основанные на версии Qt, будет выглядеть так:
#if (QT_VERSION < QT_VERSION_CHECK(4, 7, 2)) || (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
...
#endif
Это чище и приятнее, чем жестко закодированные шестнадцатеричные значения. Это также рекомендуемый способ существующие модули Qt следуют, как QtSerialPort.
Я исправил это, изменив эти строки:
#if QT_VERSION < 0x040702
// Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes
к этим:
#if (QT_VERSION < QT_VERSION_CHECK(4, 7, 2)) || (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
// Qt < 4.7.2 does not yet have the Qt::WA_*Orientation attributes
// Qt 5 has removed them.