A Qt Company publicou o lançamento do framework Qt 6.11, que continua o trabalho de estabilização e expansão da funcionalidade da série Qt 6. O Qt 6.11 oferece suporte para as plataformas Windows 10+, macOS 13+, Linux (Ubuntu 22.04/24.04, openSUSE 15.6/16, SUSE 15 SP6, RHEL 8.10/9.6/10, Debian 11.6/12), iOS 17+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS e QNX. O código fonte dos componentes do Qt está disponível sob as licenças LGPLv3 e GPLv2. O Qt 6.11 recebeu o status de versão intermediária, com suporte público disponível por 6 meses (+ mais 6 meses para usuários comerciais).
Principais mudanças no Qt 6.11:
- Adicionado o módulo Qt Canvas Painter, que oferece uma API para a renderização acelerada por hardware de conteúdo 2D, construída com base na especificação HTML Canvas 2D Context. Para a renderização, utiliza-se o motor RHI (Rendering Hardware Interface), que suporta várias APIs 3D (OpenGL, Vulkan, Metal e Direct 3D), permitindo um aumento significativo de desempenho. Em testes realizados, o Qt Canvas Painter foi duas vezes mais rápido que o QPainter com backend OpenGL em um típico laptop Lenovo ThinkPad P16 Gen 2, cinco vezes mais rápido em um tablet Android de orçamento Lenovo Tab M10 HD e dez vezes mais rápido em um tablet Android topo de linha Samsung Galaxy Tab S8.

Além do alto desempenho, o Qt Canvas Painter implementa suporte para recursos avançados, como suavização personalizável (antialiasing), gradientes de contorno e sombras (QCanvasBoxGradient e QCanvasBoxShadow semelhantes à propriedade CSS box-shadow), padrões de grade (QCanvasGridPattern), pincéis de sombreamento personalizados e efeitos de cor para alterar a opacidade, brilho, contraste e saturação.

- A funcionalidade do módulo Qt Quick 3D se aproxima das capacidades dos motores de jogos. Foi adicionado suporte à técnica de renderização SSGI (Iluminação Global em Espaço de Tela) para simular a reflexão da luz a partir de superfícies na fase de pós-processamento (alternativa ao baking de mapas de luz) e SSR (Reflexões em Espaço de Tela) para a renderização de reflexos realistas em tempo real. O algoritmo de suavização de objetos em movimento foi aprimorado através da geração de vetores de movimento para cada objeto. Foram implementadas passagens de renderização personalizáveis (render-pass), que podem ser usadas diretamente do QML para máscaras de camadas, efeitos de pós-processamento e identificação de objetos por cor (color picking). Novas interfaces de programação para camadas e tags foram adicionadas, permitindo o controle de passagens de renderização individuais, ativação de elementos em diferentes estágios do pipeline de renderização e redirecionamento para buffers de renderização específicos.

- As capacidades do módulo Qt Graphs foram ampliadas. Foi adicionado o tipo CustomSeries, que permite a criação de gráficos personalizados, onde a renderização de cada elemento de dados é gerida por um delegado definido pelo usuário. Em gráficos 3D, foi implementado suporte para múltiplas instâncias de eixos; por exemplo, em QBar3DSeries pode-se usar eixos separados para rowAxis, valueAxis e columnAxis, enquanto em QScatter3DSeries e QSurface3DSeries são utilizados eixos separados para axisX, axisY e axisZ. Novas propriedades foram adicionadas para sobrescrever cores de eixos individuais, ajustar gradientes em gráficos, alterar o estilo de linhas e posicionar rótulos. Um exemplo de criação de gráficos 2D e 3D personalizáveis foi adicionado — Painel de Turbina Eólica.

- Foi adicionado um módulo experimental Qt TaskTree, que fornece uma abordagem declarativa para a criação e execução de tarefas assíncronas em C++. Os componentes principais do Qt TaskTree incluem: "receitas" — objetos reutilizáveis que descrevem um fluxo de trabalho assíncrono; "grupos" — que definem políticas para tarefas filhas; "armazenamento" para compartilhamento de dados entre tarefas; e "iteradores" para laços e reexecução de tarefas. O Qt TaskTree também resolve o problema de incompatibilidade entre APIs, unificando várias APIs assíncronas em uma interface tipificada.

- As funcionalidades para trabalhar com gráficos vetoriais animados criados a partir de imagens nos formatos SVG e Lottie foram ampliadas. O módulo Qt Quick VectorImage e a ferramenta lottietoqml foram estabilizados. Foi adicionado suporte para animação de morphing, máscaras SVG, símbolos SVG e camadas de máscara (matte layer, para controlar a visibilidade de outra camada).
- Foi adicionado o componente DoubleSpinBox ao Qt Quick Controls. No DialogButtonBox, foi implementada a possibilidade de controlar o processamento de botões padrão. O efeito RectangularShadow agora possui controle independente sobre os raios dos cantos.
- No Qt Widgets, uma nova opção StretchBanner foi adicionada ao QWizard; no QAbstractItemView, foi implementado o parâmetro keyboardSearchFlags para ajustar o comportamento da pesquisa à medida que as teclas são pressionadas; no QColumnView, uma propriedade foi adicionada para controlar a visibilidade da pré-visualização.
- Foi adicionado o módulo Qt OpenAPI, que permite gerar código HTTP-client que utiliza a API RESTful do Qt Networks, com base na especificação OpenAPI no formato YAML.
- Foi adicionado ao módulo Qt GRPC um mecanismo para gerenciar o fluxo e o conteúdo de solicitações e respostas.
- No módulo Qt HTTP Server, foram ampliadas as ferramentas de gerenciamento de limites e melhorada a manipulação de respostas na thread de trabalho. No QNetworkRequest, agora é possível ajustar os parâmetros TCP Keep Alive (conexões inativas são automaticamente encerradas após 2 minutos).
- No QML Language Server, utilizado para integração com IDE, foi adicionada informação sobre a localização da definição do tipo QML no código C++ para facilitar a navegação entre QML e C++ a partir do IDE — ao trabalhar com código C++, é possível encontrar objetos QML por seus identificadores e facilmente percorrer a hierarquia dos contextos QML.
- Além do QRangeModel, foi implementada a classe QRangeModelAdapter, que fornece uma API C++ para modificar os dados do modelo, interagindo através do protocolo QAbstractItemModel, facilitando a transferência de dados do backend em C++ para Qt Quick ou Qt Widget.
- O suporte para a plataforma Android 16 foi adicionado. A funcionalidade Google Play Feature Delivery foi implementada para dividir o aplicativo em pacotes (o pacote principal é instalado a partir do Google Play imediatamente, enquanto pacotes adicionais são baixados conforme necessário). Para Android Automotive, foi implementado suporte para inicializar o Qt sem dependências do Android para um início rápido de renderização.
Recentemente, foi lançado o Qt Creator 19, um ambiente de desenvolvimento integrado projetado para a criação de aplicativos multiplataforma usando a biblioteca Qt. Suporta tanto o desenvolvimento de programas clássicos em C++ quanto o uso da linguagem QML, que emprega JavaScript para a definição de cenários, com a estrutura e os parâmetros dos elementos da interface definidos por blocos semelhantes ao CSS. As compilações prontas estão disponíveis para Linux, Windows e macOS.
Entre as novidades, destaca-se o modo minimap (Preferências > Editor de Texto > Exibir > Habilitar minimap), que exibe uma miniatura de todo o conteúdo ao lado da barra de rolagem, permitindo uma visão geral do código. Inclui um servidor MCP simples para integração com assistentes de IA, possibilitando abrir arquivos e projetos, iniciar compilações e realizar depuração. A configuração da compilação em dispositivos externos foi facilitada com a adição do botão Executar Detecção Automática, que identifica automaticamente a versão do Qt, compilador, depurador e CMake após registrar o dispositivo. Também foi implementado suporte ao acesso direto aos sistemas de arquivos de dispositivos conectados, incluindo dispositivos Android e emuladores.

Fonte: opennet.ru





