Qt 6: O que há de novo?

Qt 6: O que há de novo?

O Qt é um framework multiplataforma para desenvolvimento de interfaces gráficas bastante conhecido, por trazer uma interface moderna e leve. Conhecido por ser utilizado em aplicativos de Windows, Mac, além de ser utilizado em interfaces gráficas como o UKUI, Deepin Desktop Environment, LXQt e KDE Plasma.

Utilizando a linguagem C++, o projeto que foi lançado há 25 anos é hoje utilizado em ampla escala, para interfaces de aplicações de sistemas operacionais para Desktop e Mobile. Utilizando as licenças GPL e LGPL (ambas na versão 3.0), o projeto mantido pelo Qt project chegou recentemente a sua versão 6.

Quer saber um pouco mais sobre essa nova versão e os impactos que teremos no mundo do software livre e proprietário? Então prepare sua bebida favorita e vamos falar sobre o Qt.

Conhecendo o projeto Qt

Atualmente mantido pelo Qt Project, o Qt é uma iniciativa de software livre que envolve desenvolvedores individuais e vindos de empresas como Nokia, Digia, entre outras. Desenvolvido inicialmente pela divisão Qt Development Frameworks da Nokia e pela Trolltech, a empresa norueguesa que criou o Qt.

Quando a Nokia decidiu abandonar o projeto “Symbian”, o sistema operacional que vinha embarcado em seus antigos dispositivos, pelo Windows Mobile da Microsoft, foi anunciado que a Digia iria assumir o desenvolvimento do Qt, já que a própria Nokia não tinha mais interesse no framework.

Antes dessa mudança, a Nokia já preparava o lançamento da versão 5 do Qt.

O processo de mudança

O Qt 5 tem sido um sucesso ao longo dos anos e a equipe de desenvolvimento viu um enorme crescimento da base de uso do framework, ao longo dos oito anos de lançamento do Qt 5.

Bem, muita coisa mudou no mundo da tecnologia desde 2012, o uso do Qt em interfaces e softwares disparou, o C++ teve várias evoluções, foram lançadas novas APIs para gráficos 3D, diversas outras pequenas mudanças aconteceram e afetaram diretamente o projeto.

O projeto Qt precisava se adequar a todos esse recursos que estão em constante mudança, e, embora fosse possível adaptar esses requisitos durante toda a vida do Qt 5, manter o código fonte completo e a compatibilidade binária, tornou algumas coisas difíceis de resolver ao longo dos anos.

Com a chegada do Qt 6, a equipe tem a chance de fazer algumas alterações e construir o framework para que esteja pronto para futuras mudanças nos próximos anos.

Algumas mudanças do Qt 6

Durante o processo de desenvolvimento do Qt 6, a equipe identificou algumas partes centrais do projeto para realizar melhorias, dentre elas temos:

C++ 17

Como dito acima, o Qt é escrito em C++ e a partir da versão 6, exigirá um compilador compatível com C++ 17. Tal mudança permitirá o uso de construções de linguagem mais modernas ao desenvolver em Qt, além de trazer novos pontos de integração com a API.

Mudanças nas bibliotecas e APIs

Dentre algumas mudanças para as principais mudanças de APIs e bibliotecas principais temos:

  • Novo sistema de propriedade e vinculação: Este sistema agora traz o conceito de vinculações que tornou o QML um sucesso tão grande no Qt 5 disponível a partir de C++.
  • Strings e Unicode: Com Qt 5, a equipe começou a alinhar Qt totalmente com Unicode, onde grande parte do trabalho foi concluído, e, alguns itens legados foram removidos no Qt 6. 
  • O QList que tem sido uma classe frequentemente criticada no Qt 5 (pois era um monte de objetos alocando armazenamento, levando à pressão sobre os métodos de alocação de pilhas), foi alterado no Qt 6, onde foi unificado ao QVector em uma classe.
  • QMetaType e QVariant são fundamentais para como o sistema de meta-objeto do funcionamento do Qt. Sinais e slots não seriam possíveis sem QMetaType e QVariant é necessário para invocações dinâmicas. Essas duas classes passaram por uma reescrita quase completa com Qt 6.

Nova arquitetura gráfica

A arquitetura gráfica do Qt 5 dependia muito do OpenGL e foi sempre surpreendente, porém, com a evolução do mercado e novas tecnologias como Metal e Vulkan, foi necessária uma pequena mudança.

Agora, os gráficos 3D, que antigamente dependiam do OpenGL, passarão a ser construídos sobre uma nova camada de abstração para gráficos, o RHI (Rendering Hardware Interface). Em tese, isso garante que o Qt utilize a API gráfica 3D nativa do sistema operacional, sendo elas Direct3D no Windows, Metal no macOS e Vulkan no Linux.

Embora o OpenGL tenha sido a abordagem correta no ano de 2012, quando o Qt 5 foi lançado, as novas tecnologias gráficas tendem a ser mais promissoras. Com essa significativa alteração, a equipe trouxe algumas melhorias que irão garantir que o Qt possa ser utilizado por todos os usuários com desempenho total.

Qt Quick 3D e Qt 3D

O Qt Quick 3D é um módulo relativamente novo que garante o suporte completo do Qt Quick usado normalmente junto do suporte para a criação de cenas 3D complexas, além de trazer uma boa integração entre o conteúdo 2D e 3D.

Com uma integração mais profunda e de melhor desempenho, ela permite que sejam colocados itens 2D em uma cena 3D, além de melhorar o suporte para glTF2 e renderização baseada em física, tornando a importação de ativos criados em outras plataformas um processo comum.

Estilo de desktop no Qt Quick

O Qt Quick foi criado com o foco de se tornar leve e eficiente, por esse motivo, eles não suportavam o estilo do sistema operacional. Porém, a equipe encontrou uma maneira de fazer com que as aplicações desenvolvidas com o Qt 6 se pareçam nativas no macOS e Windows.

Interface com a funcionalidades da plataforma

Embora o Qt oferecesse a maior parte das funcionalidades necessárias para o desenvolvimento de aplicações, a equipe percebeu que às vezes há necessidade de interagir com algumas das funcionalidades do sistema.

Embora no Qt 5 foram fornecidos vários módulos extras, como (QtX11Extras, QtWinExtras, QtMacExtras), havia muitas inconsistências e códigos duplicados. No Qt 6, a equipe realizou um esforço para solucionar esse problema, visto que agora estas funcionalidades foram dobradas em APIs específicas que são fornecidas no próprio Qt. 

Ou seja, adeus códigos duplicados!

E a compatibilidade?

Tendo em conta o processo de migração da versão Qt 5 para o Qt 6, os desenvolvedores trabalharam para que esta migração fosse a mais fácil possível. No primeiro momento, a base de códigos foi limpa, por conta de algumas APIs e até módulos inteiros estarem obsoletos.

Algumas classes removidas no Qt 5, foram movidas para um novo módulo, o Qt5CoreCompat, que visa ajudar no porte. A intenção deste módulo é auxiliar  a portabilidade e não receberá correções de bugs, além de regressões contra Qt 5 e problemas relacionados à segurança. A equipe recomenda que você utilize o módulo para portar, mas depois remova gradualmente suas dependências para os módulos. 

Existe um guia oficial para quem deseja portar seus projetos para o Qt 6.

Plataformas suportadas

As plataformas que suportam o Qt 6 são:

Como fica o KDE?

As interfaces Linux que utilizam a tecnologia Qt como base, como o KDE e LXQt, terão várias melhorias pela frente, principalmente em consumo de recursos, já que o próprio framework está trabalhando nisso.

Vale ressaltar que o Qt 6 ainda não é tão completo quanto a versão 5.15 e que a adoção da nova versão do Qt pode levar um tempo em grandes projetos, já que houveram mudanças significativas.

O que você acha da nova versão do Qt? Quais melhorias você espera para as próximas versões? Deixe pra gente nos comentários e até o próximo artigo!


Newsletter Diolinux
Talvez Você Também Goste