Compania Qt a lansat versiunea framework-ului Qt 6.11, continuând munca de stabilizare și extindere a funcționalității ramurii Qt 6. În Qt 6.11 este oferită suport pentru platformele 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 și QNX. Codurile sursă ale componentelor Qt sunt furnizate sub licențele LGPLv3 și GPLv2. Qt 6.11 a primit statutul de versiune intermediară, suportul public pentru care va fi oferit timp de 6 luni (+ încă 6 luni pentru utilizatorii comerciali).
Modificările principale în Qt 6.11:
- A fost adăugat modulul Qt Canvas Painter, care oferă API pentru redarea hardware-accelerată a conținutului 2D, construit având în vedere specificația HTML Canvas 2D Context. Pentru redare este utilizat motorul RHI (Rendering Hardware Interface), care suportă diverse API-uri 3D (OpenGL, Vulkan, Metal și Direct 3D), ceea ce a permis obținerea unei creșteri semnificative a performanței. În testele efectuate, Qt Canvas Painter s-a dovedit a fi de două ori mai rapid decât QPainter cu backend OpenGL pe un laptop Lenovo ThinkPad P16 Gen 2, de cinci ori mai rapid pe o tabletă Android de buget Lenovo Tab M10 HD și de zece ori mai rapid pe o tabletă Android de top Samsung Galaxy Tab S8.

Pe lângă performanța ridicată, Qt Canvas Painter implementează suport pentru funcționalități avansate precum antialiasing personalizabil, umbre și degradeuri (QCanvasBoxGradient și QCanvasBoxShadow asemănătoare cu proprietatea CSS box-shadow), modele de plasă (QCanvasGridPattern), pensule personalizate cu shader și efecte de culoare pentru modificarea opacității, luminozității, contrastului și saturației.

- Funcționalitatea modulului Qt Quick 3D este apropiată de capacitățile motoarelor de jocuri. A fost adăugată suport pentru tehnica de randare SSGI (Screen Space Global Illumination) pentru simularea reflecției luminii de la suprafețe în etapa de post-procesare (alternativă la coacerea hărților de iluminare (lightmap)) și SSR (Screen Space Reflections) pentru redarea realistă a reflexiilor în timp real. Algoritmul de netezire a obiectelor în mișcare a fost îmbunătățit prin generarea vectorilor de mișcare pentru fiecare obiect. A fost implementată randarea personalizabilă (render-pass), care poate fi utilizată direct din QML pentru măștile de straturi, efectele de post-procesare și definirea obiectelor prin culoare (color picking). Au fost adăugate noi interfețe de programare pentru straturi și etichete, permițând gestionarea trecerilor de randare individuale, activarea elementelor în diferite etape ale fluxului de randare (render pipeline) și redirecționarea către bufferele de randare țintă.

- Funcționalitățile modulului Qt Graphs au fost extinse. A fost adăugat tipul CustomSeries, care permite crearea de grafice personalizate, în care randarea fiecărui element de date este preluată de un delegat specificat de utilizator. În graficele 3D a fost implementat suportul pentru mai multe instanțe de axe; de exemplu, în QBar3DSeries se pot folosi axe separate pentru rowAxis, valueAxis și columnAxis, iar în QScatter3DSeries și QSurface3DSeries - axe separate pentru axisX, axisY și axisZ. Au fost adăugate noi proprietăți pentru a suprascrie culorile pentru axele individuale, pentru a ajusta gradientele în grafice, a schimba stilul liniilor și a poziționa etichetele. A fost adăugat un exemplu de creare a graficelor personalizate 2D și 3D - Wind Turbine Dashboard.

- A fost adăugat un modul experimental Qt TaskTree, care oferă o abordare declarativă pentru crearea și executarea sarcinilor asincrone în C++. Componentele cheie ale Qt TaskTree sunt: „rețete” - obiecte reutilizabile care descriu un flux de lucru asincron; „grupuri” - definesc politici pentru sarcini copil; „depozit” pentru partajarea datelor între sarcini; „iteratori” pentru bucle și re-executarea sarcinilor. Qt TaskTree soluționează, de asemenea, problema incompatibilității între API-uri, unificând diferite API-uri asincrone într-un singur tip de interfață.

- Funcționalitățile pentru lucrul cu grafica vectorială animată, generată din imagini în formatele SVG și Lottie, au fost extinse. Modulul Qt Quick VectorImage și instrumentul lottietoqml au fost stabilizate. A fost adăugată suportul pentru animație prin morphing, măști SVG, simboluri SVG și straturi de mască (matte layer, pentru controlul vizibilității altui strat).
- Un component DoubleSpinBox a fost adăugat în Qt Quick Controls. În DialogButtonBox a fost implementată posibilitatea de a gestiona procesarea butoanelor implicite. Efectul RectangularShadow are acum un control independent al razelor colțurilor.
- În Qt Widgets, opțiunea StretchBanner a fost adăugată în QWizard; în QAbstractItemView a fost implementat parametrul keyboardSearchFlags pentru personalizarea comportamentului căutării pe măsură ce sunt apăsate tastele; în QColumnView a fost adăugat o proprietate pentru controlul vizibilității previzualizării.
- A fost adăugat modulul Qt OpenAPI, care permite generarea codului clientului HTTP, utilizând Qt Networks RESTful API, pe baza specificației OpenAPI în format YAML.
- În modulul Qt GRPC a fost adăugat un mecanism pentru gestionarea fluxului și conținutului cererilor și răspunsurilor.
- În modulul Qt HTTP Server au fost extinse mijloacele de gestionare a limitelor și îmbunătățită procesarea răspunsurilor în firul de execuție. În QNetworkRequest a fost adăugată posibilitatea de a configura parametrii TCP Keep Alive (împreună cu conexiuni inactive care se finalizează automat după 2 minute).
- În QML Language Server, utilizat pentru integrarea cu IDE, a fost adăugată informația despre locul definiției tipului QML în codul C++ pentru a simplifica navigarea între QML și C++ din IDE — lucrând cu codul C++, este posibil să găsiți obiectele QML după identificatori și să navigați cu ușurință prin ierarhia contextelor QML.
- În completarea QRangeModel a fost implementată clasa QRangeModelAdapter, care oferă un API C++ pentru modificarea datelor modelului, interacționând prin protocolul QAbstractItemModel, ceea ce simplifică transmiterea datelor din codul backend pe C++ în Qt Quick sau Qt Widget.
- A fost adăugat suportul pentru platforma Android 16. Funcționalitatea Google Play Feature Delivery a fost implementată pentru a diviza aplicația în pachete (pachetul principal este instalat din Google Play imediat, iar pachetele suplimentare sunt încărcate pe măsură ce este nevoie). Pentru Android Automotive, a fost implementat suportul pentru lansarea Qt fără dependențe de Android pentru un timp rapid de start al redării.
De asemenea, merită menționat lansarea recentă a mediului de dezvoltare integrat Qt Creator 19, destinat creării aplicațiilor cross-platform folosind biblioteca Qt. Se suportă atât dezvoltarea programelor clasice în limbajul C++, cât și utilizarea limbajului QML, în care pentru definirea scenariilor se folosește JavaScript, iar structura și parametrii elementelor de interfață sunt definiți prin blocuri asemănătoare CSS-ului. Versiunile gata preparate sunt disponibile pentru Linux, Windows și macOS.
Printre noutăți se remarcă modul minimap (Preferences > Text Editor > Display > Enable minimap), care arată lângă bara de derulare o mini-preview a întregului conținut, permițând o privire de ansamblu asupra întregului cod. În cadrul aplicației este inclus un server MCP simplu pentru integrarea cu asistenții AI, permițând deschiderea fișierelor și proiectelor, compilarea și depanarea. A fost simplificată configurarea compilării pe dispozitive externe - a fost adăugat un buton Run Auto-Detection pentru detectarea automată a versiunii Qt, compilatorului, debugger-ului și CMake-ului după înregistrarea dispozitivului. A fost implementat suportul pentru accesul direct la sistemele de fișiere ale dispozitivelor conectate, dispozitivelor Android și emulatoarelor.

Sursa: opennet.ro





