Empresa Qt Company Primeira versão de teste do novo ramo do Qt 6, que apresentará mudanças arquitetônicas significativas e exigirá um compilador que suporte o padrão C++17. A versão inclui apenas a estrutura inicial do futuro lançamento do Qt 6, que está programado para 1º de dezembro de 2020. A funcionalidade no ramo Qt 6 será expandida até a declaração de congelamento da base de código em 31 de agosto.
A primeira versão de teste inclui os módulos:
Qt Core,
Qt GUI,
Qt Widgets,
Qt Network,
Qt QML,
Qt Quick,
Qt Quick Controls,
Qt SVG,
Qt Network Authorization,
Qt SQL e
Qt Test.
Principais Qt 6:
- API gráfica abstrata, independente da API 3D do sistema operacional. O componente chave do novo conjunto gráfico do Qt é o mecanismo de renderização de cenas, que utiliza a camada RHI (Rendering Hardware Interface) para garantir que aplicações Qt Quick funcionem não só com OpenGL, mas também em cima das APIs Vulkan, Metal e Direct 3D.
- O módulo Qt Quick 3D com API para criar interfaces de usuário baseadas no Qt Quick, combinando elementos gráficos 2D e 3D. Qt Quick 3D permite usar QML para definir elementos 3D das interfaces sem a necessidade do formato UIP. No Qt Quick 3D, tanto o 2D quanto o 3D podem usar um único runtime (Qt Quick), um único layout de cena e um único framework de animação, enquanto a visualização do design da interface pode ser feita com o Qt Design Studio. O módulo resolve problemas como grandes custos de sobrecarga ao integrar QML com conteúdo de Qt 3D ou 3D Studio, e fornece a capacidade de sincronizar animações e transformações em nível de quadros individuais entre 2D e 3D.
- Reestruturação da base de código dividindo em partes menores e reduzindo o tamanho do produto básico. Ferramentas para desenvolvedores e componentes especializados serão fornecidos como complementos, distribuídos através do catálogo da .
- Modernização significativa do QML:
- Suporte à tipagem forte.
- Possibilidade de compilar QML em apresentação em C++ e código de máquina.
- Transferência do total suporte ao JavaScript para opções (o uso de um motor JavaScript completo exige muitos recursos, o que impede o uso de QML em hardware como microcontroladores).
- Abandono da versionação no QML.
- Unificação de estruturas de dados duplicadas em QObject e QML (permite reduzir o consumo de memória e acelerar a inicialização).
- Eliminação da geração de estruturas de dados em tempo de execução em favor da geração em tempo de compilação.
- Ocultação de componentes internos através do uso de métodos e propriedades privadas.
- Integração aprimorada com ferramentas de desenvolvimento para refatoração e diagnóstico de erros durante a compilação.
- Adicionar ferramentas para processar recursos gráficos durante a compilação, como converter imagens PNG em texturas compactadas ou converter shaders e malhas em formatos binários otimizados para hardware específico.
- Incorporar um mecanismo unificado para temas e estilos, permitindo alcançar uma aparência de aplicativos baseados em Qt Widgets e Qt Quick, nativa para diferentes plataformas móveis e de desktop.
- Foi decidido usar CMake como sistema de build em vez de QMake. O suporte para compilar aplicativos usando QMake será mantido, mas o próprio Qt será compilado usando CMake. CMake foi escolhido porque esta ferramenta se tornou amplamente popular entre desenvolvedores de projetos em C++ e é suportada em muitos ambientes de desenvolvimento integrados. O desenvolvimento do sistema de build Qbs, que pretendia ser uma alternativa ao QMake, pela comunidade.
- A transição durante o desenvolvimento para o padrão C++17 (anteriormente utilizava-se C++98). No Qt 6, planejam-se implementar muitos recursos modernos do C++, mas sem perder a compatibilidade retroativa com código baseado em padrões anteriores.
- A possibilidade de usar em código C++ algumas funcionalidades oferecidas para QML e Qt Quick. Incluindo uma nova sistema de propriedades para QObject e classes semelhantes. Um mecanismo para lidar com vinculações (binding) será integrado do QML para o núcleo do Qt, o que permitirá reduzir a carga e o consumo de memória para vinculações e torná-las acessíveis em todas as partes do Qt, e não apenas no Qt Quick.
- Ampliação do suporte a outros idiomas, como Python e WebAssembly.
Fonte: opennet.ru
