Después de varios meses de desarrollo y diversas versiones de prueba, The Qt Company ha lanzado la rama estable de Qt 6, que incluye cambios arquitectónicos significativos.
La nueva versión afirma ser compatible con las plataformas Windows 10, macOS 10.14+, Linux (Ubuntu 20.04+, CentOS 8.1+, OpenSuSE 15.1+), iOS 13+ y Android (API 23+)
Principales novedades de QT 6
De las principales novedades que fueron mencionadas y en las cuales se estuvo trabajando, una de ellas es la API gráfica abstraída que no depende de la API 3D del sistema operativo. Un componente clave de la nueva pila de gráficos Qt es un motor de renderizado de escenas que utiliza una capa RHI (Rendering Hardware Interface) para proporcionar aplicaciones Qt Quick no solo con OpenGL, sino también sobre las API Vulkan, Metal y Direct 3D.
Se ha elaborado un módulo Qt Quick 3D con API para crear interfaces de usuario basadas en Qt Quick, combinando elementos gráficos 2D y 3D. Qt Quick 3D le permite usar QML para definir elementos de interfaz 3D sin usar el formato UIP. En Qt Quick 3D para 2D y 3D, puede usar un tiempo de ejecución (Qt Quick), un diseño de escena y un marco de animación, y usar Qt Design Studio para el desarrollo de la interfaz visual.
El módulo resuelve problemas como la gran sobrecarga de integrar QML con contenido de Qt 3D o 3D Studio, y brinda la capacidad de sincronizar animaciones y transformaciones a nivel de cuadro entre 2D y 3D.
Otra de las novedades, es la reestructuración del código base se llevó a cabo con un desglose en partes más pequeñas y una reducción del tamaño del producto base. Las herramientas de desarrollo y los componentes personalizados ahora están disponibles como complementos a través de Qt Marketplace.
Por otra parte, podremos encontrar que se incorpora un motor de diseño y máscaras unificado para lograr la apariencia de las aplicaciones basadas en Qt Widgets y Qt Quick, nativas de diferentes plataformas móviles y de escritorio.
Qt Quick 6 agrega soporte para los estilos nativos de macOS y Windows (el soporte para los estilos nativos Material y Fusion para Android y Linux se implementó en Qt5). Se espera una implementación de estilo nativo para iOS en la próxima versión significativa de Qt.
La funcionalidad de soporte de plataforma proporcionada anteriormente por los módulos QtX11Extras, QtWinExtras y QtMacExtras se ha trasladado a las API específicas de la plataforma disponibles directamente desde Qt.
El kit de herramientas CMake se utiliza como sistema de compilación en lugar de QMake. Se mantiene el soporte para la construcción de aplicaciones usando QMake, pero Qt ahora se construye usando CMake.
Además, se realizó una transición durante el desarrollo al estándar C++ 17 (anteriormente se usaba C ++ 98 y con Qt 5.7 – C++ 11) y se agregó la capacidad de usar en código C++ algunas de las funciones ofrecidas para QML y Qt Quick. Esto incluye un nuevo sistema de propiedades para QObject y clases similares.
Se ha integrado un motor para trabajar con enlaces desde QML en el núcleo de Qt, lo que permite reducir la carga y el consumo de memoria para los enlaces y ponerlos a disposición de todas las partes de Qt, no solo de Qt Quick.
De los demás cambios que se destacan:
- Unificación de estructuras de datos, duplicadas en QObject y QML (reducirá el consumo de memoria y acelerará el inicio).
- Evitar la generación de estructuras de datos en tiempo de ejecución en favor de la generación en tiempo de compilación.
- Ocultar componentes internos mediante el uso de métodos y propiedades privados.
Integración mejorada con herramientas de desarrollo para la refactorización y el diagnóstico de errores en tiempo de compilación. - Se agregaron herramientas para manejar recursos relacionados con gráficos en tiempo de compilación, como convertir imágenes PNG a texturas comprimidas o convertir sombreadores y mallas en binarios optimizados para hardware específico.
- Soporte extendido para lenguajes adicionales como Python y WebAssembly.
- Manejo de cadenas y manejo Unicode significativamente mejorado.
- Las clases QList y QVector se fusionan, la clase de resumen resultante utiliza un modelo de contenedor QVector similar a una matriz.
Finalmente, se espera alcanzar la paridad con Qt 5 en apoyo de sistemas en tiempo real en la versión Qt 6.2.
El próximo lanzamiento significativo de Qt 6.1 se espera en abril y Qt 6.2 LTS en septiembre de 2021.
Fuente: ubunlog