Compania Qt Company a publicat versiunea framework-ului Qt 6.8, continuând lucrările de stabilizare și extindere a funcționalității ramurii Qt 6. În Qt 6.8, este oferit suport pentru platformele 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 și QNX. Codurile sursă ale componentelor Qt sunt furnizate sub licențele LGPLv3 și GPLv2.
Qt 6.8 a obținut statusul de versiune LTS, pentru care actualizările vor fi generate timp de cinci ani pentru deținătorii de licență comercială, ceea ce reprezintă cu două ani mai mult decât în versiunile LTS anterioare. Pentru utilizatorii non-comerciali, perioada de suport va fi de șase luni (până la formarea unei noi versiuni semnificative). Suportul pentru vechea ramură LTS Qt 6.5 va continua până în mai 2026, iar suportul pentru ramura LTS anterioară Qt 6.2 a fost oprit pe 30 septembrie 2024. Ramura Qt 5.15 va fi susținută până în mai 2025.
Principalele schimbări în Qt 6.8:
- Modulul Qt Graphs a fost stabilizat și a fost transformat într-un modul complet suportat, destinat construirii diferitelor tipuri de grafice 2D și 3D, precum și vizualizării unor colecții mari de date în schimbare rapidă. Modulul evoluează ca o înlocuire universală a vechiului modul Qt DataVisualization, legat de OpenGL, și a modulului Qt Charts. Noua modul utilizează Qt Quick 3D și motorul de randare RHI (Rendering Hardware Interface), care suportă diferite API-uri 3D (OpenGL, Vulkan, Metal și Direct 3D).
Comparativ cu versiunea anterioară, în Qt Graphs 3D au fost adăugate optimizări de performanță, a fost asigurat suportul pentru transparență în graficele tridimensionale (Bars3D), au fost extinse posibilitățile de gestionare a poziționării și designului etichetelor și titlurilor, iar randarea liniilor rețelei de navigație a fost îmbunătățită. În Qt Graphs 2D, a fost oferită posibilitatea de a desena propriile tipuri de diagrame cu bare (prin componente QML), a fost adăugat suport pentru diagramele cu bare stivuite și au fost extinse instrumentele de afișare a etichetelor. API-ul a fost unificat pentru utilizarea temelor în graficele 2D și 3D. Apelurile specifice pentru widget-uri au fost transferate în modulul Qt Graphs Widgets.
- Stabilizat și transformat în modul complet susținut, QtHttpServer, care permite integrarea funcționalității unui server HTTP în aplicații, susținând HTTP/1.1, TLS/HTTPS, WebSockets, gestionarea erorilor, rutarea cererilor pe baza parametrilor din URL (QHttpServerRouter) și REST API. Comparativ cu versiunea anterioară, în clasa QNetworkAccessManager a fost implementată posibilitatea de a trimite cereri HTTP printr-un socket local. Suport adăugat pentru utilizarea clasei QFormDataBuilder pentru a simplifica transmiterea mai multor seturi de date (de exemplu, date text și fișiere atașate) într-o singură cerere HTTP (HTTP multi-part).
- Stabilizat și transformat în modul complet susținut, modulul Qt GRPC, care permite accesarea serviciilor prin protocolul gRPC.
- Stabilizat și transformat în modul complet susținut, modulul Qt Protobuf, destinat serializării claselor Qt, folosind protocolul Protocol Buffer.
- S-a adăugat suport pentru platformele mobile Android 14 și iOS 18.
- A fost oferită posibilitatea dezvoltării aplicațiilor pentru sistemele de desktop Linux și Windows cu procesoare ARM, precum și pentru căștile 3D Apple Vision Pro și Meta Quest 3 XR.
- S-a adăugat suport pentru Raspberry Pi 5, NVIDIA AGX Orin și unele plăci bazate pe SoC NXP, Toradex și STM. Suport adăugat pentru plăcile RISC-V StarFive VisionFive 2.
- Funcționalitățile pentru generarea de compilări reduse Qt, care pot fi utilizate pe dispozitive cu memorie limitată, au fost extinse. De exemplu, prin dezactivarea funcționalităților și componentelor Qt neutilizate, se poate reduce dimensiunea compilării în stocarea permanentă cu 77% și consumul de RAM cu 32%, precum și se poate reduce semnificativ timpul de pornire.
- În modulul Qt Multimedia pe platforma Linux, a fost implementat suportul pentru captură de ecran folosind clasa QScreenCapture în medii bazate pe protocolul Wayland, utilizând serviciul ScreenCast și sistemul de portaluri XDG Desktop. Au fost adăugate clasele QVideoFrameInput, QAbstractVideoBuffer și QAudioBufferInput, prin care se pot trimite date multimedia proprii într-o sesiune de înregistrare (QMediaCaptureSession), precum și clasa QAudioBufferOutput pentru conectarea handler-ilor care primesc date audio în etapa de după decodificare.
- A fost adăugat modul Qt Quick Vector Image, care permite integrarea imaginilor vectoriale în format SVG în scenele Qt Quick. Acest lucru poate fi utilizat, de exemplu, pentru a crea elemente de interfață scalabile, care nu depind de rezoluție și dimensiunea ecranului.

- A fost adăugat modulul Qt Quick 3D XR pentru crearea aplicațiilor destinate platformelor de realitate virtuală și augmentată, folosind tehnologiile Qt Quick 3D. Pentru a organiza interacțiunea cu mediile tridimensionale create cu ajutorul Qt Quick 3D, se susține utilizarea dispozitivelor de urmărire a mișcărilor mâinilor și a controlerelor VR. Pentru vizualizare pot fi utilizate ochelarii Apple VisionPro sau căștile 3D care suportă standardul OpenXR, cum ar fi Meta Quest 2/3.

- În Qt Quick au fost aduse optimizări care accelerează redarea scenelor complexe. Clasa TableView a primit posibilitatea de a muta coloanele și rândurile. În tipurile Image și BorderImage a fost implementat suportul pentru încărcarea asincronă a imaginilor (imaginea veche rămâne activă în timp ce se încarcă cea nouă).
- Modulul Qt Quick Effect Maker a adăugat suport pentru animarea sprite-urilor, deformarea elementelor în cerc și utilizarea efectelor de strălucire și estompare selectivă (masked blur).
- În modulul Qt Quick Shapes, la umplerea conturului s-a permis utilizarea oricăror furnizori de texturi în elementele de tip ShapePath. În clasa QQuickRenderTarget au fost adăugate noi metode pentru gestionarea procesării texturilor și simplificarea integrării Qt Quick 3D cu motoare externe, framework-uri și API-uri.
- În Qt Quick Controls a fost propus un nou stil Fluent WinUI3, care permite crearea unei interfețe care arată ca Windows 11 pe orice platformă. În macOS a fost implementată posibilitatea utilizării meniului global furnizat de platformă în interfețele create cu ajutorul Quick MenuBar.

- În Qt Quick 3D a fost îmbunătățită redarea umbrelor prin utilizarea hărților de umbre în cascadă și filtrării blânde a umbrelor. În tipul PrincipledMaterial au fost adăugate noi proprietăți. A fost oferită posibilitatea de a folosi în materialele proprii aceleași proprietăți ca în materialele de bază tip PrincipledMaterial.

- În modulul Qt Network Auth a fost adăugat clasa QOAuthUriSchemeReplyHandler pentru crearea handlerelor de redirecționare către un alt scheme URI în timpul autentificării cu ajutorul OAuth 2.0. În clasa QOAuth2AuthorizationCodeFlow a fost adăugată suportul pentru extensia OAuth PKCE (Proof Key for Code Exchange).
- În clasa QDnsLookup a fost adăugată posibilitatea de a trimite cereri folosind „DNS over TLS”, a fost implementat suport pentru înregistrările DNS TLSA (TLS Certificate Association) și a fost asigurată informarea clientului cu privire la verificarea datelor de către serverul DNS.
- În Qt Core a fost adăugat clasa QChronoTimer cu un wrapper deasupra bibliotecii std::chrono, permițând creșterea preciziei operațiunilor cu timpul. A fost implementată posibilitatea de a schimba dimensiunea QString, QByteArray și QList fără inițializarea datelor. În QHash a fost adăugat suport pentru stocarea datelor de tip QString și QStringView într-un singur hash. În QDirListing a fost oferit un API bazat pe iterator pentru parcurgerea conținutului directorului.
- În Qt GUI a fost oferită posibilitatea de a suprascrie setările schemei de culori ale sistemului, de exemplu, pentru alegerea modului întunecat sau deschis, precum și pentru setările acțiunilor care duc la invocarea meniului contextual.
- În Qt Sql, driverele DBMS PostgreSQL și MySQL/MariaDB acum procesează corect timpul și datele în situația în care clientul și serverul sunt server selectate în fusuri orare diferite.
- Qt WebEngine a adăugat noi clase: QWebEngineFrame pentru a lucra la nivelul blocurilor iframe individuale; QWebEngineClientHints pentru a gestiona identificarea browserului; QWebEnginePermission pentru a gestiona drepturile de acces legate de site-uri.
- În Qt Widgets a fost îmbunătățit procesul de redare a widget-urilor pe ecranele cu densitate mare de pixeli (high-DPI).
- Generatorul de documentație QDoc a fost transferat de la API-ul C la API-ul C++ și acum pentru funcționarea sa este necesar cel puțin Clang 17. Au fost adăugate comenzi noi, cum ar fi „\keyword” și „\nativetype”.
- În cadrul lucrărilor de îmbunătățire a stabilității și performanței versiunii LTS, au fost efectuate peste 500 de corecturi și optimizări.
Sursa: opennet.ro




