L'azienda Qt Company ha pubblicato la versione del framework Qt 6.8, in cui è proseguito il lavoro per stabilizzare e aumentare le funzionalità della linea Qt 6. In Qt 6.8 è fornito supporto per le piattaforme Windows 10+, macOS 12+, Linux (Ubuntu 22.04/24.04, openSUSE 15.5, SUSE 15 SP5, RHEL 8.8/9.2, Debian 11.6), iOS 16+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS e QNX. I codici sorgente dei componenti Qt sono forniti sotto licenze LGPLv3 e GPLv2.
Qt 6.8 ha ottenuto lo status di versione LTS, per la quale gli aggiornamenti saranno rilasciati per cinque anni per i possessori di licenza commerciale, il che è due anni in più rispetto alle precedenti versioni LTS. Per gli utenti non commerciali, il supporto durerà sei mesi (fino alla formazione di una nuova versione significativa). Il supporto per la precedente versione LTS Qt 6.5 continuerà fino a maggio 2026, mentre il supporto per la versione LTS precedente Qt 6.2 terminerà il 30 settembre 2024. La linea Qt 5.15 sarà supportata fino a maggio 2025.
Le principali novità in Qt 6.8:
- Il modulo Qt Graphs è stato stabilizzato e classificato tra quelli completamente supportati, ed è destinato alla creazione di vari tipi di grafici 2D e 3D, nonché alla visualizzazione di grandi raccolte di dati in rapido cambiamento. Il modulo si sviluppa come una sostituzione universale del vecchio modulo Qt DataVisualization, legato a OpenGL, e del modulo Qt Charts. Il nuovo modulo utilizza Qt Quick 3D e il motore di rendering RHI (Rendering Hardware Interface), che supporta vari API 3D (OpenGL, Vulkan, Metal e Direct 3D).
Rispetto alla versione precedente, Qt Graphs 3D presenta ottimizzazioni delle prestazioni, supporta la trasparenza nei grafici 3D (Bars3D), amplia le capacità di gestione della posizione e della formattazione di etichette e titoli, e migliora il rendering delle linee della griglia di navigazione. In Qt Graphs 2D è stata aggiunta la possibilità di disegnare grafici a barre personalizzati (tramite componenti QML), è stato aggiunto il supporto per grafici a barre impilate e ampliate le funzionalità di visualizzazione delle etichette. L'API per l'uso dei temi in grafica 2D e 3D è stata unificata. Le chiamate specifiche per i widget sono state trasferite al modulo Qt Graphs Widgets.
- Stabilizzato e tradotto nella categoria dei moduli completamente supportati, il modulo QtHttpServer consente di integrare nelle applicazioni le funzionalità di un server HTTP, supportando HTTP/1.1, TLS/HTTPS, WebSockets, gestione degli errori, instradamento delle richieste basato su parametri nell'URL (QHttpServerRouter) e REST API. Rispetto alla versione precedente, nella classe QNetworkAccessManager è stata implementata la possibilità di inviare richieste HTTP tramite un socket locale. È stata fornita la supporto per l'utilizzo della classe QFormDataBuilder per semplificare l'invio di più set di dati (ad esempio, dati testuali e file allegati) in un'unica richiesta HTTP (HTTP multi-part).
- Stabilizzato e tradotto nella categoria dei moduli completamente supportati, il modulo Qt GRPC consente di accedere ai servizi tramite il protocollo gRPC.
- Stabilizzato e tradotto nella categoria dei moduli completamente supportati, il modulo Qt Protobuf è destinato alla serializzazione delle classi Qt, utilizzando il protocollo Protocol Buffer.
- Aggiunto supporto per le piattaforme mobili Android 14 e iOS 18.
- Fornita la possibilità di sviluppare applicazioni per sistemi desktop Linux e Windows con processori ARM, oltre che per visori 3D Apple Vision Pro e Meta Quest 3 XR.
- Aggiunto supporto per Raspberry Pi 5, NVIDIA AGX Orin e alcune schede basate su SoC NXP, Toradex e STM. È stato aggiunto il supporto per le schede RISC-V StarFive VisionFive 2.
- Ampliate le possibilità per la generazione di build ridotte di Qt, utilizzabili su dispositivi con limitata capacità di memoria. Ad esempio, disabilitando funzionalità e componenti Qt non utilizzati si può ottenere una riduzione della dimensione della build nel storage permanente fino al 77% e una diminuzione del consumo di RAM del 32%, oltre a ridurre significativamente il tempo di avvio.
- Nel modulo Qt Multimedia sulla piattaforma Linux è stata implementata la supporto per la registrazione dello schermo utilizzando la classe QScreenCapture in ambienti basati sul protocollo Wayland, usando il servizio ScreenCast e il sistema portale XDG Desktop. Sono state aggiunte le classi QVideoFrameInput, QAbstractVideoBuffer e QAudioBufferInput, grazie alle quali è possibile organizzare l'invio di dati multimediali personalizzati in una sessione di registrazione (QMediaCaptureSession), oltre alla classe QAudioBufferOutput per connettere i gestori che ricevono dati audio dopo la decodifica.
- È stato aggiunto il modulo Qt Quick Vector Image, che consente di integrare immagini vettoriali in formato SVG nelle scene Qt Quick, il che può essere utilizzato, ad esempio, per creare elementi dell'interfaccia scalabili, indipendenti dalla risoluzione e dalle dimensioni dello schermo.

- È stato aggiunto il modulo Qt Quick 3D XR per la creazione di applicazioni per piattaforme di realtà virtuale e aumentata, utilizzando le tecnologie Qt Quick 3D. Per gestire l'interazione con ambienti tridimensionali creati con Qt Quick 3D, è supportato l'uso di dispositivi di tracciamento del movimento delle mani e controller VR. Per la visualizzazione possono essere utilizzati gli occhiali Apple VisionPro o visori 3D che supportano lo standard OpenXR, come Meta Quest 2/3.

- In Qt Quick sono state introdotte ottimizzazioni che accelerano il rendering di scene complesse. Nella classe TableView è stata aggiunta la possibilità di spostare colonne e righe. Nei tipi Image e BorderImage è stata implementata la supporto per il caricamento asincrono delle immagini (l'immagine vecchia rimane mentre viene caricata quella nuova).
- Nel modulo Qt Quick Effect Maker è stata aggiunta la supporto per l'animazione degli sprite, la curvatura degli elementi su un perimetro e l'uso di effetti di luminosità e sfocatura selettiva (masked blur).
- Nel modulo Qt Quick Shapes, durante il riempimento del contorno, è consentito l'uso di qualsiasi fornitore di texture per elementi di tipo ShapePath. Nella classe QQuickRenderTarget sono stati aggiunti nuovi metodi per gestire l'elaborazione delle texture e semplificare l'integrazione di Qt Quick 3D con motori esterni, framework e API.
- In Qt Quick Controls è stato proposto un nuovo stile Fluent WinUI3, che consente di creare un'interfaccia simile a Windows 11 su qualsiasi piattaforma. Su macOS è stata implementata la possibilità di utilizzare il menu globale fornito dalla piattaforma nelle interfacce create con Quick MenuBar.

- In Qt Quick 3D è stato migliorato il rendering delle ombre grazie all'uso di shadow map a cascata e alla filtrazione morbida delle ombre. Nel tipo PrincipledMaterial sono state aggiunte nuove proprietà. È stata fornita la possibilità di utilizzare negli elementi personalizzati le stesse proprietà disponibili nei materiali basati sul tipo PrincipledMaterial.

- Nel modulo Qt Network Auth è stata aggiunta la classe QOAuthUriSchemeReplyHandler per creare gestori di redirect a un altro schema URI durante l'autenticazione tramite OAuth 2.0. Nella classe QOAuth2AuthorizationCodeFlow è stato aggiunto il supporto per l'estensione OAuth PKCE (Proof Key for Code Exchange).
- Nella classe QDnsLookup è stata aggiunta la possibilità di inviare richieste utilizzando «DNS over TLS», è stata implementata la supporto per i record DNS TLSA (TLS Certificate Association) e fornita l'informativa al cliente riguardo alla verifica dei dati da parte del server DNS.
- In Qt Core è stata aggiunta la classe QChronoTimer con un wrapper sopra la libreria std::chrono, che consente di aumentare la precisione delle operazioni temporali. È stata implementata la possibilità di modificare la dimensione di QString, QByteArray e QList senza inizializzare i dati. In QHash è stata aggiunta la supporto per memorizzare nello stesso hash dati di tipo QString e QStringView. In QDirListing è fornita un'API basata su iteratore per scorrere il contenuto delle directory.
- In Qt GUI è stata fornita la possibilità di sovrascrivere le impostazioni dello schema colore di sistema, ad esempio, per selezionare una modalità scura o chiara, così come le impostazioni per azioni che portano all'apertura del menu contestuale.
- Nel driver Qt Sql per i database PostgreSQL e MySQL/MariaDB ora vengono correttamente gestiti i tempi e le date nelle situazioni in cui il client e il server server scegono diversi fusi orari.
- In Qt WebEngine sono stati aggiunti nuovi classi: QWebEngineFrame per lavorare a livello di singoli blocchi iframe; QWebEngineClientHints per gestire l'identificazione del browser; QWebEnginePermission per gestire i diritti di accesso legati ai siti.
- In Qt Widgets è migliorato il rendering dei widget su schermi ad alta densità di pixel (high-DPI).
- Il generatore di documentazione QDoc è stato trasferito dall'API C all'API C++ e ora richiede almeno Clang 17 per funzionare. Sono stati aggiunti nuovi comandi, come «\keyword» e «\nativetype».
- Nell'ambito del lavoro per aumentare la stabilità e le prestazioni della release LTS sono stati effettuati oltre 500 correttivi e ottimizzazioni.
Fonte: opennet.ru




