En esta página

Migración a Qt 6

Hay muchos cambios en Qt desde la versión anterior, Qt 5, a Qt 6. Antes de actualizar a Qt 6, asegúrate de que tu aplicación Qt 5 está actualizada a Qt 5.15. La última versión de Qt 5 es la que presenta menos cambios a la hora de portar a Qt 6. Sin embargo, las APIs marcadas como obsoletas o en desuso en Qt 5.15 pueden haber sido eliminadas en Qt 6.

Estas son las cosas que deberías comprobar si estás portando tus aplicaciones de Qt 5 a Qt 6.

Deshabilitar el uso de la API C++ obsoleta en Qt 5.15

El uso de la API obsoleta en Qt se mostrará normalmente en forma de advertencia del compilador. También puede hacer que el uso sea un error definiendo la macro QT_DISABLE_DEPRECATED_UP_TO C++ en su sistema de compilación. Para desactivar cualquier API obsoleta en 5.15 o versiones anteriores de Qt, defina la macro a 0x050F00, que es '5.15.0' codificado como un número hexadecimal.

Por ejemplo, en un archivo de proyecto qmake, defina la macro con:

DEFINES += QT_DISABLE_DEPRECATED_UP_TO=0x050F00

En CMake, puede utilizar add_compile_definitions:

add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)

Comprobar los cambios en los módulos

Uno de los objetivos de la versión Qt 6 es mantener un marco de trabajo simplificado, lo que significa la eliminación de algunos módulos de Qt 5 en Qt 6. En algunos casos, las API de un módulo obsoleto están disponibles en otro módulo. En futuras versiones de Qt 6, es posible que se añadan módulos nuevos o anteriores.

Prueba de regresiones gráficas

Las aplicaciones QML tienen un nuevo backend gráfico, que debería probar en busca de regresiones. OpenGL ya no está garantizado por defecto en las plataformas de destino y debe comprobar que su código gráfico sigue creando los mismos efectos que desea.

Aún es posible utilizar llamadas a OpenGL en aplicaciones Qt, pero las API de OpenGL se han trasladado al módulo Qt OpenGL módulo. El backend gráfico para aplicaciones Qt Widgets no ha cambiado desde Qt 5.

  • Gráficos
  • Cambiosen Qt Quick - cambios en los gráficos de Qt Quick que pueden afectar a las aplicaciones Qt 5

Alto-DPI

Qt 6 es compatible con pantallas de alta resolución de PPP en todas las plataformas, y tendrá en cuenta automáticamente la resolución de la pantalla cuando se utilicen API de nivel superior como Qt Widgets o Qt Quick. Las aplicaciones sólo necesitan proporcionar activos de alta resolución, como imágenes e iconos. La función está siempre activada.

Qt 6 cambia la política de redondeo del factor de escala por defecto de Qt::HighDpiScaleFactorRoundingPolicy::Round a Qt::HighDpiScaleFactorRoundingPolicy::PassThrough con el fin de realizar un seguimiento preciso de la configuración DPI del sistema operativo. Las aplicaciones que utilizan Qt Widgets pueden encontrar fallos gráficos en factores de escala no enteros, por ejemplo en Windows con una pantalla configurada para 175%. En ese caso, establezca la política de redondeo en Round para restaurar el comportamiento de Qt 5.

Consulte DPI altos para obtener más detalles.

Utilizar las API de integración de la plataforma

En Qt 6 hay una mejor integración con las API nativas de las plataformas de destino. Puede utilizar las API de integración de plataformas para implementar comportamientos nativos que Qt no proporciona. Para Qt 6, compruebe si hay actualizaciones en la plataforma de destino de su aplicación.

Usar herramienta de portabilidad

Existe una herramienta basada en Clazy para facilitar la migración de Qt 5 a Qt 6: Porting C++ Applications to Qt 6 using Clazy checks.

Más información

Cambios en QTextStream

En Qt 6 se ha eliminado el método QTextStream::setCodec(). Utilice QTextStream::setEncoding() en su lugar.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.