L'azienda Qt Company ha pubblicato la release del framework Qt 6.12, continuando il lavoro di stabilizzazione e ampliamento delle funzionalità della serie Qt 6. Qt 6.12 supporta le piattaforme Windows 10+, macOS 13+, Linux (Ubuntu 22.04/24.04, openSUSE 16, SUSE 15 SP6, RHEL 9.6/10.0, Debian 11.6/12), iOS 17+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS e QNX. Il codice sorgente dei componenti Qt è rilasciato sotto le licenze LGPLv3 e GPLv2.
Qt 6.12 ha ottenuto lo status di release LTS, per la quale gli aggiornamenti saranno forniti per cinque anni per gli utenti con licenza commerciale. Per gli utenti non commerciali, il periodo di supporto sarà di sei mesi (fino alla creazione di una nuova release significativa). Il supporto per la precedente versione LTS Qt 6.8 durerà fino a ottobre 2029, mentre il supporto per la versione LTS precedente, Qt 6.5, è terminato quest'anno.
Principali novità in Qt 6.12:
- Riconosciuto pronto per un uso diffuso, il modulo Qt Canvas Painter fornisce un'API per il rendering hardware accelerato di contenuti 2D e utilizza shader per creare complessi effetti visivi. Il rendering avviene tramite il motore RHI (Rendering Hardware Interface), che supporta diverse API 3D (OpenGL, Vulkan, Metal e Direct 3D). Sulla base di Canvas Painter è stato implementato un elemento sperimentale Canvas2D, progettato in base alle specifiche HTML del Canvas 2D Context e che semplifica l'uso di JavaScript per il disegno di forme.

- Aggiunto un modulo sperimentale StyleKit, che separa chiaramente la struttura dei componenti dell'interfaccia utente e gli attributi di stile, consentendo di eliminare la duplicazione del codice quando si implementano temi chiari, scuri e ad alto contrasto. StyleKit offre un'API QML unificata per la descrizione degli stili, permettendo di ottenere uno stile coerente in applicazioni ibride che combinano widget classici ed elementi basati su Qt Quick.

- Ampliate le funzionalità del modulo Qt Graphs. Per i grafici 2D sono state implementate nuove proprietà per la personalizzazione delle etichette degli assi e aggiunta il supporto per assi logarithmici. Sono state aggiunte azioni integrate per zoom e panoramica. È stata aggiunta un'opzione per il rendering tramite un backend ad alte prestazioni basato su CanvasPainter, che consente di visualizzare grandi volumi di dati in rapida evoluzione.
- In Qt Quick, QML types Safe Area, Context Menu, Double Spin Box, and Search Field have been added to enable the display of unobstructed content, context menus, number input forms, and search query submission fields. The QML type FlexboxLayout has been expanded, designed for responsive layout of interface elements according to the Flexbox concept used in CSS for easier vertical alignment of elements.
- In the Vector Image module, which allows integrating vector images into Qt Quick scenes for creating scalable interface elements, additional properties and animation capabilities have been added for images in SVG and Lottie formats.
- The QRangeModel class has been expanded, providing a wrapper for QAbstractItemModel for direct use in QML and Qt Quick interface elements for any enumerated types from C++, including std::vector, std::tuples, and std::array. The new version includes support for data sorting, new properties for controlling movement in ‘Drag & Drop’ mode, faster searching through the match() method, and settings for headers and individual rows/elements.
- The gRPC module has added tools for compressing messages on the client side and limiting the size of incoming messages from server.
- The QML engine has implemented a Hot Reload mechanism, allowing for editing QML code on the fly during program execution and observing the results through qmlpreview without restarting or stopping the application.
- LTS support for the HarmonyOS platform has been provided, simplifying the porting of existing Qt applications to Huawei smartphones, tablets, PCs, and automotive infotainment systems.
- The requirements of the European Cyber Resilience Act (CRA) have been met, aimed at maintaining product security, promptly addressing vulnerabilities throughout the product lifecycle, and disclosing information about vulnerabilities and security incidents. Components critical to security have been highlighted in the source code, security testing information has been organized for publication, and integration of up-to-date versions of third-party libraries has been ensured.

Fonte: opennet.ru


