Qt Company har udgivet en version af Qt 6.11, hvor arbejdet med at stabilisere og udbygge funktionerne i Qt 6 fortsætter. I Qt 6.11 er der tilføjet understøttelse for platforme som 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 og QNX. Kildekoden til Qt-komponenterne leveres under LGPLv3 og GPLv2 licenser. Qt 6.11 får status som en mellemrelease, som offentligt vil blive understøttet i 6 måneder (+ yderligere 6 måneder for kommercielle brugere).
De vigtigste ændringer i Qt 6.11:
- Qt Canvas Painter-modulet er tilføjet, som giver et API til hardwareaccelereret gengivelse af 2D-indhold og er bygget med henblik på HTML-specifikationen for Canvas 2D Context. Gengivelsen bruger RHI (Rendering Hardware Interface) motoren, der understøtter forskellige 3D API'er (OpenGL, Vulkan, Metal og Direct 3D), hvilket har resulteret i en betydelig stigning i ydelsen. I udførte tests viste Qt Canvas Painter sig at være 2 gange hurtigere end QPainter med OpenGL-backend på en typisk Lenovo ThinkPad P16 Gen 2 bærbar, 5 gange hurtigere på en budgetvenlig Lenovo Tab M10 HD Android-tablet og 10 gange hurtigere på en topmodel Samsung Galaxy Tab S8 Android-tablet.

Foruden den høje ydeevne i Qt Canvas Painter er der også understøttelse af avancerede funktioner som tilpasset anti-aliasing, gradientrammer og skygger (QCanvasBoxGradient og QCanvasBoxShadow ligesom CSS-egenskaben box-shadow), netmønstre (QCanvasGridPattern), brugerdefinerede shaderpensler og farveeffekter til at ændre gennemsigtighed, lysstyrke, kontrast og mætning.

- Funktionaliteten i Qt Quick 3D-modulet er tæt på mulighederne i spilmotorer. Der er tilføjet støtte til SSGI (Screen Space Global Illumination) renderingsteknikker for at simulere lysrefleksioner fra overflader i post-behandlingsstadiet (et alternativ til baking af lyskort (lightmap)) og SSR (Screen Space Reflections) for realistisk reflektion i realtid. Algoritmen til glatning af bevægede objekter er forbedret ved at generere bevægelsesvektorer for hvert objekt. Der er implementeret tilpassede render-pass, som kan bruges direkte fra QML til lagmasker, post-behandlings-effekter og farve-identifikation (color picking). Nye API'er til lag og tags er blevet tilføjet, hvilket muliggør styring af individuelle render-pass, aktivering af elementer på forskellige stadier af renderingspipeline (render pipeline) og omdirigering til mål-renderingsbuffere.

- Mulighederne i Qt Graphs-modulet er blevet udvidet. Den nye CustomSeries type gør det muligt at skabe brugerdefinerede diagrammer, hvor en angivet brugerdelegat står for rendering af hver dataelement. I 3D-diagrammer er der kommet støtte til flere akse-instancer, såsom i QBar3DSeries, som kan bruge separate akser til rowAxis, valueAxis og columnAxis, og i QScatter3DSeries og QSurface3DSeries — separate akser til axisX, axisY og axisZ. Nye egenskaber er blevet tilføjet for at overskrive farver for separate akser, tilpasse gradienter på diagrammerne, ændre linjestil og positionere etiketter. Et eksempel på oprettelse af brugerdefinerede 2D- og 3D-diagrammer er blevet tilføjet — Wind Turbine Dashboard.

- Der er tilføjet et eksperimentelt Qt TaskTree-modul, som tilbyder en deklarativ tilgang til oprettelse og udførelse af asynkrone opgaver i C++. Nøglekomponenterne i Qt TaskTree inkluderer: 'opskrifter' — genbrugbare objekter, der beskriver asynkrone arbejdsgange; 'grupper' — definerer politikker for underopgaver; 'lager' til deling af data mellem opgaver; 'iterators' til løkker og gentagelse af opgaver. Qt TaskTree løser også problemet med inkompatibilitet mellem API'er ved at standardisere forskellige asynkrone API'er til en type grænseflade.

- Mulighederne for at arbejde med animeret vektorgrafik, der dannes fra billeder i SVG- og Lottie-formater, er blevet udvidet. Qt Quick VectorImage-modulet og lottietoqml-værktøjet er stabiliseret. Der er tilføjet support til morfingsanimation, SVG-masker, SVG-symboler og maske-lag (matte layer, til styring af synligheden af et andet lag).
- I Qt Quick Controls er komponenten DoubleSpinBox blevet tilføjet. DialogButtonBox har nu mulighed for at styre behandlingen af standardknapper. Effektiviteten RectangularShadow har fået uafhængig kontrol over hjørneradius.
- I Qt Widgets er der tilføjet en mulighed for StretchBanner i QWizard; i QAbstractItemView er parameteren keyboardSearchFlags implementeret til at justere søgeadfærden, når der trykkes på taster; der er tilføjet en egenskab i QColumnView til at styre synligheden af forhåndsvisning.
- Der er tilføjet et Qt OpenAPI-modul, der muliggør generering af HTTP-klientkode, som anvender Qt Networks RESTful API, baseret på en OpenAPI-specifikation i YAML-format.
- Modulet Qt GRPC har fået en mekanisme til at styre strømmen og indholdet af anmodninger og svar.
- I Qt HTTP Server-modulet er værktøjerne til styring af grænserne blevet udvidet, og håndteringen af svar i arbejdstråden er blevet forbedret. QNetworkRequest har fået mulighed for at justere TCP Keep Alive-parametre (standard forbindelser, der ikke er aktive, afsluttes automatisk efter 2 minutter).
- I QML Language Server, der anvendes til integration med IDE, er der tilføjet information om, hvor typen af QML er defineret i C++-koden for at lette navigeringen mellem QML og C++ fra IDE — ved arbejde med C++-kode kan man finde QML-objekter via identificatorer og nemt navigere i QML-kontekster.
- Ud over QRangeModel er der implementeret en klasse QRangeModelAdapter, der giver C++ API til at ændre modeldata ved at interagere via QAbstractItemModel-protokollen, hvilket letter overførelsen af data fra backend-koden til C++ i Qt Quick eller Qt Widget.
- Support til Android 16-platformen er blevet tilføjet. Funktionaliteten Google Play Feature Delivery er implementeret til at opdele applikationen i pakker (hovedpakken installeres straks fra Google Play, mens yderligere hentes efter behov). For Android Automotive er der implementeret support til at starte Qt uden Android-afhængigheder for hurtigt at komme i gang med rendering.
Yderligere kan det nævnes, at den for nylig offentliggjorte version af den integrerede udviklingsmiljø Qt Creator 19 er beregnet til at udvikle cross-platform applikationer ved hjælp af Qt-biblioteket. Både udvikling af klassiske programmer i C++ og brug af QML-sproget understøttes, hvor JavaScript anvendes til at definere scenarier, og struktur og parametre for brugergrænsefladeelementer fastlægges med CSS-lignende blokke. Færdige builds er tilgængelige for Linux, Windows og maсOS.
Blandt nyhederne er minimap-tilstand (Preferences > Text Editor > Display > Enable minimap), som viser et miniaturebillede af alt indholdet ved siden af rullebjælken og giver mulighed for hurtigt at få overblik over hele koden. Desuden er der inkluderet en simpel MCP-server til integration med AI-assistenter, som gør det muligt at åbne filer og projekter, køre builds og udføre debugging. Opsætningen af builds på eksterne enheder er blevet forenklet — en knap til Run Auto-Detection er tilføjet for automatisk at bestemme versionen af Qt, compiler, debugger og CMake efter tilmelding af enheden. Direct access til filsystemer på tilsluttede enheder, Android-enheder og emulatorer er blevet implementeret.

Kilde: opennet.ru





