Disponible Qt 6 con soporte de C++ 17 y abstracción para los gráficos 3D
The Qt Company ha anunciado la publicación de Qt 6.0, la nueva versión mayor del conocido framework que es además uno de los principales componentes para la creación de interfaces gráficas en Linux y aplicaciones multiplataforma, porque no solo es la base tecnológica de KDE Plasma y LXQt, sino también de destacadas aplicaciones como VirtualBox, VLC, Shotcut y muchas otras.
Qt 6.0 pretende ser una clara evolución frente a la versión anterior del framework, pero desde The Qt Company avisan que por ahora “no tiene tantas funciones como 5.15”, una situación que la empresa espera ir resolviendo en los próximos meses. Tras avisar a navegantes, vamos a mencionar las principales novedades y mejoras del software que nos ocupa.
Qt 6 ha llegado sobre todo con la intención de adaptar el framework a las tecnologías que han emergido o evolucionado en los últimos tiempos, manteniendo en el proceso sus principales virtudes, que son el desarrollo multiplataforma para escritorio, móviles y sistemas embebidos; la “escalabilidad desde dispositivos de un solo propósito y de gama baja hasta aplicaciones de escritorio complejas de gama alta”; sus API, herramientas y documentación; además de su mantenibilidad, estabilidad y compatibilidad para permitir a los usuarios “mantener grandes bases de código con un mínimo esfuerzo.”
La primera novedad que encontramos es el requerimiento de usar un compilador compatible C++ 17, la última versión del popular lenguaje de propósito general y orientado a objetos. La empresa ha intentado con este movimiento permitir el uso de construcciones de lenguaje C++ más modernas al desarrollar con Qt y puntos de integración en el lado de la API.
En lo que respecta a las bibliotecas principales y las API del framework, Qt 6 incorpora un nuevo sistema de propiedad y binding, mejoras en el soporte de Unicode, la unificación de ‘QList’ y ‘QVector’ en una misma clase y que ahora “‘QMetaType’ y ‘QVariant’ son fundamentales para el funcionamiento del sistema de metaobjetos de Qt”. También se han introducido una gran cantidad de cambios en componentes que no están relacionados con los gráficos, como el hecho de que Qt Concurrent haya “experimentado una reescritura casi completa para hacer que el desarrollo de las aplicaciones multiproceso sea más sencillo que nunca.”
La GPU ha ganado mucho protagonismo durante el transcurso de la última década (2011-2020), y obviamente Qt no iba a quedarse atrás en ese aspecto. Qt 5 se apoyó en su momento en OpenGL para dotarse de características de aceleración por hardware, pero surgió la necesidad de adaptarse mejor a las API propietarias de Microsoft y Apple: DirectX y Metal. En Qt 6 se ha introducido y habilitado por defecto Rendering Hardware Interface (RHI), que es una nueva capa de abstracción para gráficos 3D que se encarga de que Qt Quick se apoye en Direct3D en Windows y en Metal en macOS. Sobre Linux no se comenta de si esta característica ha llegado o no, o si se sigue apoyando en OpenGL o se ha iniciado la transición a Vulkan.
Qt Quick 3D es un módulo relativamente reciente con el que se ha pretendido ofrecer una API con soporte completo para la “creación de escenas complejas en 3D”, todo con la intención de que sea “tan fácil de usar como las partes existentes de Qt Quick” y permitir una integración perfecta entre los contenidos en 2D y en 3D. Qt Quick 3D ha sido mejorado en Qt 6 gracias a la introducción de RHI, la mejora de la integración de los contenidos en 2D y en 3D y la mejora del soporte para glTF2 y la renderización basada en físicas.
Qt Quick no tiene en Qt 5 soporte para el estilo del escritorio, lo que provoca que muchas aplicaciones construidas con dicha versión del framework se vean un tanto extrañas, sobre todo fuera de Linux. Sin embargo, en Qt 6.0 se ha dotado a Qt Quick de “soporte de estilos nativos tanto en macOS como en Windows”, cosa que en Linux y Android “ya existía con los estilos Material y Fusion en Qt 5.”
Otro aspecto interesante de Qt 6 es que “ahora se construye usando CMake”, lo que ha repercutido en más mejoras para aquellos desarrolladores que usan CMake en sus proyectos, si bien el soporte de qmake seguirá presente durante el tiempo de vida útil de la nueva versión mayor del framework. Por otro lado, ahora Qt 6 es suministrado como un paquete más pequeño, haciendo que muchos complementos sean ahora suministrados como paquetes separados a través del correspondiente gestor.
Y aquí tenemos buena parte de los aspectos más importantes de Qt 6. Para conocer todos los detalles se pueden consultar el anuncio oficial y la wiki del framework. A nivel de sistemas se requiere Windows 10, macOS 10.14 o posterior, Ubuntu 20.04, CentOS 8.1 u openSuSE 15.1 (aquí solo nos hacemos eco de lo publicado en el anuncio oficial).
Cerramos recordando las intenciones de The Qt Company y Digia de devolver el framework a las tinieblas del software privativo, limitando el lanzamiento de cada nueva versión de Qt a clientes de pago durante un año. En MuyLinux hemos comprobando que Qt 6 está disponible desde el instalador de la versión Open Source, así que podemos decir que se ha abierto la puerta a comenzar con el desarrollo de KDE Plasma 6.