Qt Company ha rilasciato il framework Qt 6.6, continuando a lavorare sulla stabilizzazione e sull'espansione delle funzionalità della serie Qt 6. Qt 6.6 offre supporto per le piattaforme Windows 10+, macOS 11+, Linux (Ubuntu 22.04, openSUSE 15.4, SUSE 15 SP4, RHEL 8.6/9.0), iOS 14+, Android 8+ (API 23+), webOS, WebAssembly, INTEGRITY e QNX. I codici sorgente dei componenti Qt sono forniti con licenze LGPLv3 e GPLv2.
Principali novità in Qt 6.6:
- Nel modulo Qt Quick è stata implementata una supporto sperimentale per il layout adattivo dell'interfaccia. Per cambiare dinamicamente il layout in base alle dimensioni della finestra e per disporre automaticamente gli elementi secondo la struttura del layout attuale, è stata proposta la classe LayoutItemProxy, mentre nel modulo Qt Quick Layouts è stata fornita la possibilità di usare dimensioni uniformi per le celle nei layout a griglia, righe e colonne.

- In Qt Quick sono stati aggiunti il supporto per le modalità di selezione (proprietà selectionMode) nel tipo QML TableView (ad esempio, è possibile gestire la selezione di celle, righe, colonne e set di celle), è stata fornita la possibilità di modificare la proprietà rootIndex, nel tipo QML TreeView è stata estesa la gestione dell'aspetto delle barre di scorrimento (scroll-deceleration) nel tipo QML Flickable, ed è stata implementata la riduzione automatica dei percorsi dei file. È stato reso accessibile da QML l'API per la gestione dei permessi.
- È stato aggiunto un modulo sperimentale Qt Graphs, progettato per fornire un modulo universale per la visualizzazione di grandi collezioni di dati in rapido cambiamento e per la costruzione di vari tipi di grafici. Questo modulo si evolve come una sostituzione universale del vecchio modulo Qt DataVisualization, legato a OpenGL, e del modulo Qt Charts. Il modulo è ancora in fase di sviluppo ed è attualmente focalizzato sulla riproduzione della funzionalità di Qt DataVisualization sopra Qt Quick 3D e sull'uso di un nuovo motore di rendering (RHI, Rendering Hardware Interface) che supporta varie API 3D (OpenGL, Vulkan, Metal e Direct 3D).

- Nel modulo Qt Multimedia è stata aggiunta la classe QWindowCapture per catturare il contenuto di finestre singole, complementando la classe QScreenCapture introdotta nella versione precedente, limitata alla cattura dell'intero schermo. QWindowCapture consente di ottenere un elenco di finestre disponibili per la cattura e può essere utilizzata nelle applicazioni per fornire la condivisione delle finestre. La cattura di finestre e schermi è supportata utilizzando il backend FFmpeg su tutte le piattaforme, tranne quelle che utilizzano il protocollo Wayland.
- Nella classe QMediaRecorder sono state aggiunte proprietà per gestire la qualità video, la risoluzione e il bitrate.
- Sono state ampliate le funzionalità dei moduli Qt GRPC e Qt Protobuf, che consentono di accedere ai servizi gRPC e di eseguire la serializzazione delle classi Qt, utilizzando il protocollo Protocol Buffer. In Qt GRPC sono state aggiunte nuove opzioni QGrpcChannelOptions e QGrpcCallOptions per semplificare la configurazione di canali e chiamate, e per limitare il tempo massimo di esecuzione di una chiamata o di un flusso. È stata aggiunta l’opzione QGrpcMetadata per impostare i metadati dal cliente e leggere i metadati restituiti. server.In Qt GRPC è stato integrato il supporto per il tipo QML per la generazione automatica delle classi client QtGRPC. In Qt Protobuf è stato consentito l'inclusione nella schema *.proto di alcuni tipi di Qt Core e Qt GUI, e sono state fornite possibilità di accesso ai contesti QML tramite le classi QProtobufMessage. È stato fornito supporto per i tipi google.protobuf.Any e oneof.
- Nel modulo Qt WebEngine è stata aggiunta un'API per accedere alle impostazioni di privacy e sicurezza, che consente di disabilitare determinate possibilità del motore del browser. Ad esempio, utilizzando gli attributi QWebEngineUrlScheme::FetchApiAllowed e QWebEngineSettings::DisableReadingFromCanvas è possibile disabilitare l'API Fetch e il rendering degli elementi Canvas per ridurre il rischio di identificazione passiva. È stata aggiunta la supporto per l'URL interno "chrome://qt", l'apertura di esso mostra una pagina con informazioni sulla versione del motore Chromium in uso.
- Nel modulo Qt Sql è stato aggiunto un plugin con supporto per il database Mimer SQL, sono state ampliate le impostazioni di connessione nel driver per i database MySQL e MariaDB.
- Nel modulo Qt PDF sono state fornite classi per accedere ai link, alle miniature delle pagine e alle pagine selezionate.
- In Qt Quick, il tipo Font ha implementato una nuova API per una configurazione avanzata del layout dei glifi (shaping) nei font OpenType. È stata fornita la possibilità di utilizzare il modulo Qt Quick Shapes per un'alta qualità nel disegno di linee e curve, utilizzando uno shader frammentario.

- È stato svolto un lavoro di documentazione per il motore di rendering RHI (Rendering Hardware Interface), così come per stabilizzare la relativa API a basso livello. Il livello di supporto per la retrocompatibilità di RHI ora corrisponderà all'API Qt Platform Abstraction, consentendo di utilizzare direttamente RHI per sviluppare codice a basso livello multipiattaforma, funzionante con tutti i principali stack grafici e API grafiche (OpenGL, Vulkan, Metal e Direct 3D).
- Nel modulo Qt Quick 3D è stata aggiunta la supporto per la creazione procedurale di texture e geometria basate su mesh poligonali da QML.
- Nel modulo Qt TextToSpeech è stata introdotta la possibilità di generare dati PCM (Pulse-Code Modulation) per ulteriori elaborazioni della voce sintetizzata (in precedenza era supportata solo l'uscita diretta su un dispositivo audio). Sono state fornite ulteriori impostazioni per la segmentazione del testo, è stato aggiunto un API per la ricerca delle voci necessarie e un API per la determinazione delle funzioni disponibili del motore.
- Nel pacchetto di moduli «Qt for Python», che offre strumenti per la creazione di applicazioni grafiche in Python utilizzando Qt, è stata aggiunta la supporto per le operazioni asincrone tramite asyncio. È stata garantita la compatibilità di Qt for Python con dispositivi basati su architettura AArch64.
- È stata aggiornata la stack Boot2Qt, utilizzabile per creare sistemi mobili avviabili con un ambiente basato su Qt e QML. L'ambiente di sistema di Boot2Qt è stato aggiornato alla piattaforma Yocto 4.2 (Mickledore). Sono in corso lavori per fornire build pronte di Boot2Qt per le schede NXP e i dispositivi Renesas R-Car.
- È stato aggiunto il supporto per la piattaforma Android 13. Su Windows e Linux è stata migliorata la supporto per l'architettura ARM. Sono stati collocati nei repository ufficiali del progetto Debian pacchetti con Qt 6 per Debian 11 e Debian 12, mentre nei repository dellQt Company sono disponibili pacchetti con componenti commerciali di Qt 6.6 per Debian.
- Sono stati migliorati gli strumenti di sviluppo per la piattaforma WebAssembly, consentendo la creazione di applicazioni Qt che funzionano nel browser web e sono portabili tra diverse piattaforme hardware. Le applicazioni compilate per la piattaforma WebAssembly, grazie alla compilazione JIT, vengono eseguite con prestazioni vicine al codice nativo e possono utilizzare Qt Quick, Qt Quick 3D e gli strumenti di visualizzazione disponibili in Qt. Nella nuova versione è stata semplificata la debug di applicazioni per WebAssembly e migliorato il supporto per questa piattaforma grazie al supporto per il linking dinamico (le applicazioni per WebAssembly possono ora essere fornite con librerie condivise e plugin Qt).
Fonte: opennet.ru



