Qt4 y Qt5 tienen una organización diferente de archivos de encabezado. Entonces necesito verificar la versión qt para incluir diferentes cosas, por ejemplo:
#if QT_VERSION >= 0x050000
#include <QtMultimedia>
#endif
sin embargo, esto parece no funcionar. No se ha definido QT_VERSION. ¿Como puedó resolver esté problema?
Tan pronto como incluyas <QtGlobal>
Puedes verificar eso con macros:
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
Es lo mismo que sugirió @Javier, solo una sintaxis diferente, más legible para mí.
-
Si bien esta solución es más legible (y por lo tanto obtuvo mi voto a favor), debe tenerse en cuenta que
moc
es incapaz de entenderlo. Por ejemplo, quería usar QOpenGLWidget donde estuviera disponible (Qt >= 5.4) y, de lo contrario, recurrir a QGLWidget. Pero eso solo funciona si usoQT_VERSION >= 0x050400
y no si uso la solución de esta respuesta.– josé
13 de marzo de 2016 a las 9:29
-
@josch Nunca tuve problemas con eso, aunque dicen que qmake de QT4 no expande las macros, por lo que obviamente no funciona para QT4. ¿Tiene ese problema con QT5?
– de inmediato717
13/03/2016 a las 16:20
-
Correcto, lo tengo con Qt 5.3.1
– josé
13/03/2016 a las 21:21
Como comentó @Tay2510, QT_VERSION
se declara dentro de <QtGlobal>
. Como resultado, debe escribir #include <QtGlobal>
u otro encabezado que incluya <QtGlobal>
antes de la versión dependiente directivas del pre procesador.
<QObject>
y <QCoreApplication>
también se puede usar para acceder QT_VERSION
.
Aquí hay un ejemplo del código:
#include <QtGlobal>
#if QT_VERSION >= 0x050000
#include <QApplication>
#else
#include <QtGui/QApplication>
#endif
Recuerde que el proyecto qmake también debe manejar variaciones de versión.
Estos son los cambios que se deben hacer al usar la biblioteca multimedia QT:
El archivo .pro debería parecerse a:
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
Está declarado en el archivo de cabecera.
<QtGlobal>
(o"qglobal.h"
). Compruebe si los ha incluido en el proyecto.– Tay2510
23 de julio de 2014 a las 3:18