E foi lançado o Qt 6.0 com API gráfica abstraída, independente de sistema operacional. Confira as novidades desse lançamento.
Criado inicialmente pela empresa norueguesa Trolltech, Qt é um framework multiplataforma para desenvolvimento de interfaces gráficas em C++.
Com essa ferramenta é possível desenvolver aplicativos e bibliotecas uma única vez e compilá-los para diversas plataformas, sem que seja necessário alterar o código fonte.
Agora, após vários meses de desenvolvimento e várias versões de teste, a The Qt Company lançou o branch estável do Qt 6, que inclui mudanças significativas na arquitetura.
Novidades do Qt 6
A nova versão afirma ser compatível com as plataformas Windows 10, macOS 10.14+, Linux (Ubuntu 20.04+, CentOS 8.1+, OpenSuSE 15.1+), iOS 13+ e Android (API 23+).
Das principais novidades que foram mencionadas e nas quais estavam trabalhando, uma delas é a API gráfica abstraída que não depende da API 3D do sistema operacional.
Um componente chave da nova pilha de gráficos Qt é um mecanismo de renderização de cena que usa uma camada RHI (Rendering Hardware Interface) para fornecer aplicativos Qt Quick não apenas com OpenGL, mas também no topo das APIs Vulkan, Metal e Direct 3D.
Um módulo Qt Quick 3D com API foi desenvolvido para criar interfaces de usuário baseadas no Qt Quick, combinando elementos gráficos 2D e 3D. Qt Quick 3D permite que você use QML para definir elementos de interface 3D sem usar o formato UIP.
No Qt Quick 3D para 2D e 3D, você pode usar um tempo de execução (Qt Quick), layout de cena e quadro de animação e usar o Qt Design Studio para desenvolvimento de interface visual.
O módulo resolve problemas como a sobrecarga pesada de integração de QML com conteúdo Qt 3D ou 3D Studio e fornece a capacidade de sincronizar animações e transformações em nível de quadro entre 2D e 3D.
Outra novidade é a reestruturação do código base, que foi feita com a quebra em partes menores e redução do tamanho do produto base. Ferramentas de desenvolvedor e componentes personalizados agora estão disponíveis como add-ons no Qt Marketplace.
Por outro lado, podemos descobrir que um motor de design unificado e skins são incorporados para conseguir a aparência de aplicativos baseados em Qt Widgets e Qt Quick, nativos para diferentes plataformas móveis e desktop.
Qt Quick 6 adiciona suporte para macOS e estilos nativos do Windows (o suporte para estilos nativos de Material e Fusion para Android e Linux foi implementado no Qt5).
Uma implementação de estilo nativo para iOS é esperada na próxima versão significativa do Qt.
A funcionalidade de suporte de plataforma fornecida anteriormente pelos módulos QtX11Extras, QtWinExtras e QtMacExtras foi movida para as APIs específicas da plataforma disponíveis diretamente no Qt.
O CMake Toolkit é usado como sistema de construção em vez do QMake. O suporte para construir aplicativos usando QMake é mantido, mas o Qt agora é construído usando CMake.
Além disso, uma transição foi feita durante o desenvolvimento para o padrão C++ 17 (anteriormente era usado C++ 98 e com Qt 5.7 – C++ 11) e a capacidade de usar em código C++ algumas das funções oferecidas para QML e Qt Quick foi adicionada.
Isso inclui um novo sistema de propriedades para QObject e classes semelhantes.
Um mecanismo para trabalhar com links do QML foi integrado ao kernel do Qt, permitindo que você reduza a carga e o consumo de memória dos links e os torne disponíveis para todas as partes do Qt, não apenas para o Qt Quick.
Das outras mudanças que se destacam:
- Unificação de estruturas de dados, duplicadas em QObject e QML (irá reduzir o consumo de memória e acelerar a inicialização).
- Evite a geração de estruturas de dados em tempo de execução em favor da geração em tempo de compilação.
- Oculte componentes internos usando propriedades e métodos privados.
- Integração aprimorada com ferramentas de desenvolvimento para refatoração em tempo de compilação e diagnóstico de bugs.
- Ferramentas foram adicionadas para lidar com recursos relacionados a gráficos em tempo de compilação, como a conversão de imagens PNG em texturas compactadas ou a conversão de sombreadores e malhas em binários otimizados por hardware.
- Suporte estendido para linguagens adicionais, como Python e WebAssembly.
- O manuseio de strings e Unicode melhorou significativamente.
- As classes QList e QVector são mescladas, a classe de resumo resultante usa um modelo de contêiner QVector semelhante a matriz.
Finalmente, espera-se atingir a paridade com o Qt 5 no suporte a sistemas de tempo real na versão Qt 6.2.
Para mais detalhes sobre o lançamento do Qt 6, acesse o Qt.io.
O próximo lançamento significativo do Qt 6.1 é esperado em abril e do Qt 6.2 LTS em setembro de 2021.