Qt Company har offentliggjort version 6.12 af Qt-rammeværket, hvor arbejdet med stabilisering og funktionalitetsudvidelse af Qt 6-familien fortsætter. Qt 6.12 tilbyder support for platforme som 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 og QNX. Kildekoden til Qt-komponenterne leveres under LGPLv3 og GPLv2 licenser.
Qt 6.12 har opnået LTS-status, hvilket betyder, at opdateringer vil blive udgivet i fem år for indehavere af en kommerciel licens. For ikke-kommercielle brugere vil supporttiden være seks måneder (indtil en ny betydelig version er udgivet). Støtten til den tidligere LTS-version Qt 6.8 vil vare indtil oktober 2029, mens støtten til den ældre LTS-version Qt 6.5 stopper i år.
De vigtigste ændringer i Qt 6.12:
- Modulet Qt Canvas Painter er blevet anerkendt som klar til bred anvendelse og tilbyder et API for hardwareaccelere tegning af 2D-indhold og bruger shaders til at skabe komplekse visuelle effekter. Tegningen udføres ved hjælp af RHI (Rendering Hardware Interface), der understøtter forskellige 3D API'er (OpenGL, Vulkan, Metal og Direct 3D). Baseret på Canvas Painter er der udviklet et eksperimentelt element Canvas2D, som er oprettet med henblik på HTML-specifikationen for Canvas 2D Context og forenkler brugen af JavaScript til at tegne former.

- Et eksperimentelt modul, StyleKit, er tilføjet, som tydeligt adskiller strukturen af brugergrænsefladekomponenter og stilattributter, hvilket muliggør eliminering af kode duplication ved implementering af lyse, mørke og højkonstrast temaer. StyleKit tilbyder et ensartet QML API til beskrivelse af stilarter, hvilket sikrer et ensartet udseende i hybride applikationer, der kombinerer klassiske widgets med elementer bygget på Qt Quick.

- Mulighederne i Qt Graphs-modulet er blevet udvidet. Der er implementeret nye egenskaber til tilpasning af akse-etiketter for 2D-diagrammer, og der er tilføjet support for logaritmiske akser. Indbyggede handlinger for zooming og panorering er blevet tilføjet. Der er også tilføjet en mulighed for at tegne ved hjælp af en højtydende backend baseret på CanvasPainter-modulet, hvilket muliggør visualisering af store mængder hurtigt skiftende data.
- I Qt Quick er der tilføjet QML-typer som Safe Area, Context Menu, Double Spin Box og Search Field for at vise ikke-overlappende indhold, kontekstmenuer, numeriske inputfelter og søgefeltet. QML-typen FlexboxLayout, der er designet til responsiv layout af grænsefladeelementer i overensstemmelse med Flexbox-konceptet anvendt i CSS, er også blevet udvidet for at forenkle vertikal justering af elementer.
- I modul Vector Image, der muliggør integration af vektorbilleder i Qt Quick-scener for at skabe skalerbare grænsefladeelementer, er der tilføjet yderligere egenskaber og animationsmuligheder for billeder i SVG- og Lottie-formater.
- Klassen QRangeModel, der tilbyder en wrapper over QAbstractItemModel til direkte brug i QML og Qt Quick brugerfladeelementer for ethvert opremseligt type fra C++, inklusive std::vector, std::tupel og std::array, er blevet udvidet. Den nye version indeholder support til sortering af data, nye egenskaber til kontrol over bevægelse i "Drag & Drop"-tilstand, hurtigere søgning gennem match()-metoden samt indstillinger for overskrifter og enkelte rækker/elementer.
- GRPC-modulet har fået tilføjet værktøjer til komprimering af meddelelser på klientsiden og begrænsning af størrelsen på indkommende meddelelser fra server.
- Der er implementeret en Hot Reload-mekanisme i QML-motoren, som muliggør redigering af QML-kode on-the-fly under programudførelse og observation af resultatet gennem qmlpreview uden at genstarte eller stoppe programmet.
- LTS-support til platformen HarmonyOS er blevet tilføjet, hvilket forenkler overførslen af eksisterende Qt-applikationer til smartphones, tablets, pc'er og bilens infotainmentsystemer fra Huawei.
- Kravene i den europæiske lov Cyber Resilience Act (CRA), der har til formål at opretholde produktets sikkerhed, hurtigt afhjælpe sårbarheder i hele livscyklussen og offentliggøre oplysninger om sårbarheder og sikkerhedshændelser, er blevet opfyldt. I kildekoden er de komponenter, der er kritisk vigtige for sikkerhed, blevet fremhævet, og der er blevet organiseret offentliggørelse af informationer om sikkerhedstestning og garanteret integration af de nyeste versioner af tredjepartsbiblioteker.

Kilde: opennet.ru


