Het Qt Company heeft de release van het Qt 6.8-framework gepubliceerd, waarin de stabilisatie en uitbreiding van de functionaliteit van de Qt 6-tak wordt voortgezet. Qt 6.8 biedt ondersteuning voor de platforms 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 en QNX. De broncode van de Qt-componenten wordt geleverd onder de LGPLv3- en GPLv2-licenties.
Qt 6.8 heeft de status van een LTS-release gekregen, waarbij updates gedurende vijf jaar zullen worden verstrekt voor houders van een commerciële licentie, wat twee jaar langer is dan bij eerdere LTS-releases. Voor niet-commerciële gebruikers bedraagt de ondersteuningstijd zes maanden (tot de vorming van een nieuwe significante release). De ondersteuning voor de vorige LTS-tak Qt 6.5 zal voortduren tot mei 2026, terwijl de ondersteuning voor de daarvoor liggende LTS-tak Qt 6.2 op 30 september 2024 eindigt. De Qt 5.15-tak zal worden ondersteund tot mei 2025.
Belangrijkste wijzigingen in Qt 6.8:
- De module Qt Graphs is gestabiliseerd en overgebracht naar de categorie van volledig ondersteunde modules, bedoeld voor het maken van verschillende soorten 2D- en 3D-grafieken, evenals voor de visualisatie van grote verzameling snel veranderende gegevens. De module wordt ontwikkeld als een universele vervanger voor de oudere module Qt DataVisualization, die afhankelijk is van OpenGL, en de module Qt Charts. De nieuwe module maakt gebruik van Qt Quick 3D en de rendering-engine RHI (Rendering Hardware Interface), die ondersteuning biedt voor verschillende 3D API's (OpenGL, Vulkan, Metal en Direct 3D).
In vergelijking met de vorige release zijn er prestatieoptimalisaties toegevoegd aan Qt Graphs 3D, is transparantie op driedimensionale grafieken (Bars3D) ondersteund, zijn de mogelijkheden voor het beheer van de locatie en opmaak van labels en koppen uitgebreid, en is de weergave van navigatienetlijnen verbeterd. In Qt Graphs 2D is de mogelijkheid tot het tekenen van eigen soorten staafdiagrammen (via QML-componenten) toegevoegd, evenals ondersteuning voor gestapelde staafdiagrammen, en zijn de middelen voor het weergeven van labels uitgebreid. De API is geünificeerd voor het toepassen van thema's in 2D- en 3D-grafieken. Widget-specifieke aanroepen zijn verplaatst naar de module Qt Graphs Widgets.
- De module QtHttpServer is gestabiliseerd en gecategoriseerd als volledig ondersteunde module. Deze module maakt het mogelijk om HTTP-serverfunctionaliteit in applicaties te integreren, die HTTP/1.1, TLS/HTTPS, WebSockets, foutafhandeling, en het routeren van verzoeken op basis van URL-parameters (QHttpServerRouter) en REST API ondersteunt. In vergelijking met de vorige versie is in de klasse QNetworkAccessManager de mogelijkheid toegevoegd om HTTP-verzoeken via een lokale socket te verzenden. Ondersteuning is geboden voor het gebruik van de klasse QFormDataBuilder om het verzenden van meerdere gegevenssets (bijvoorbeeld tekstgegevens en een bijgevoegd bestand) in één HTTP-verzoek (HTTP multi-part) te vereenvoudigen.
- De module Qt GRPC is gestabiliseerd en gecategoriseerd als volledig ondersteunde module, waarmee toegang tot services via het gRPC-protocol mogelijk is.
- De module Qt Protobuf is gestabiliseerd en gecategoriseerd als volledig ondersteunde module, die is bedoeld voor het serialiseren van Qt-klassen met behulp van het Protocol Buffer-protocol.
- Ondersteuning voor de mobiele platforms Android 14 en iOS 18 is toegevoegd.
- Er is de mogelijkheid geboden om applicaties te ontwikkelen voor desktop-systemen Linux en Windows met ARM-processors, evenals voor 3D-headsets zoals Apple Vision Pro en Meta Quest 3 XR.
- Ondersteuning voor Raspberry Pi 5, NVIDIA AGX Orin, en verschillende bordjes gebaseerd op SoC NXP, Toradex en STM is toegevoegd. Tevens is ondersteuning toegevoegd voor RISC-V borden StarFive VisionFive 2.
- De mogelijkheden voor het creëren van afgeslankte Qt-bundels zijn uitgebreid, die gebruikt kunnen worden op apparaten met beperkte geheugencapaciteit. Door ongebruikte functies en componenten van Qt uit te schakelen, kan de grootte van de bundel in permanente opslag met 77% worden verkleind en het RAM-gebruik met 32%, evenals de opstarttijd aanzienlijk te verkorten.
- In de module Qt Multimedia is op het Linux-platform ondersteuning voor schermopname geïmplementeerd met behulp van de klasse QScreenCapture in omgevingen op basis van het Wayland-protocol, gebruikmakend van de ScreenCast-service en het XDG Desktop-portalsysteem. Klasses zoals QVideoFrameInput, QAbstractVideoBuffer en QAudioBufferInput zijn toegevoegd, waarmee eigen multimediagegevens naar een opname-sessie (QMediaCaptureSession) kunnen worden gestuurd, evenals de klasse QAudioBufferOutput voor het aansluiten van handlers die audiogegevens na decoding ophalen.
- De Qt Quick Vector Image-module is toegevoegd, waarmee vectorafbeeldingen in SVG-formaat kunnen worden geïntegreerd in Qt Quick-scènes. Dit kan bijvoorbeeld worden gebruikt voor het creëren van schaalbare interface-elementen die niet afhankelijk zijn van resolutie en schermgrootte.

- Het Qt Quick 3D XR-module is toegevoegd voor het maken van applicaties voor virtual en augmented reality-platforms, waarbij gebruik wordt gemaakt van Qt Quick 3D-technologieën. Voor de interactie met driedimensionale omgevingen die zijn gemaakt met Qt Quick 3D, wordt ondersteuning geboden voor bewegingsdetectieapparaten en VR-controllers. Voor visualisatie kunnen Apple VisionPro-brillen of 3D-headsets die voldoen aan de OpenXR-standaard, zoals Meta Quest 2/3, worden gebruikt.

- In Qt Quick zijn optimalisaties toegevoegd die de rendering van complexe scènes versnellen. In de TableView-klasse is het nu mogelijk om kolommen en rijen te verplaatsen. In de Image- en BorderImage-types is ondersteuning voor asynchrone afbeeldingsladen geïmplementeerd (de oude afbeelding blijft zichtbaar terwijl de nieuwe wordt geladen).
- In het Qt Quick Effect Maker-module is ondersteuning voor animatie van sprites, kromming van elementen rond een omtrek, evenals het gebruik van gloeieffecten en selectieve vervaging (masked blur) toegevoegd.
- In het Qt Quick Shapes-module is toegestaan om bij het vullen van de omtrek in elementen van het type ShapePath elke textuurprovider te gebruiken. In de QQuickRenderTarget-klasse zijn nieuwe methoden toegevoegd voor het beheren van textuurverwerking en het vereenvoudigen van de integratie van Qt Quick 3D met externe engines, frameworks en API's.
- In Qt Quick Controls is een nieuwe Fluent WinUI3-stijl voorgesteld, waarmee een interface kan worden gevormd die eruitziet als Windows 11 op elke platform. In macOS is de mogelijkheid geïmplementeerd om het door het platform geboden globale menu te gebruiken in interfaces die zijn gemaakt met Quick MenuBar.

- In Qt Quick 3D is de rendering van schaduwen verbeterd door het gebruik van cascade schaduwkaarten en zachte schaduwfiltering. In het PrincipledMaterial-type zijn nieuwe eigenschappen toegevoegd. Daarnaast is het mogelijk om in eigen materialen dezelfde eigenschappen te gebruiken als die in materialen op basis van het PrincipledMaterial-type.

- In de Qt Network Auth-module is de QOAuthUriSchemeReplyHandler-klasse toegevoegd voor het maken van redirect-handlers naar een andere URI-schema bij authenticatie met OAuth 2.0. In de QOAuth2AuthorizationCodeFlow-klasse is ondersteuning voor de OAuth-extensie PKCE (Proof Key for Code Exchange) toegevoegd.
- De QDnsLookup-klasse heeft nu de mogelijkheid om verzoeken te verzenden met behulp van 'DNS over TLS', is er ondersteuning voor TLSA DNS-records (TLS Certificate Association) geïmplementeerd en wordt de klant geïnformeerd over de verificatie van de gegevens door de DNS-server.
- In Qt Core is de QChronoTimer-klasse toegevoegd, die een wrapper biedt bovenop de std::chrono-bibliotheek, waardoor een hogere nauwkeurigheid van tijdsoperaties wordt bereikt. Er is de mogelijkheid geïmplementeerd om de grootte van QString, QByteArray en QList te wijzigen zonder gegevensinitialisatie. QHash ondersteunt nu het opslaan van gegevens van de types QString en QStringView in één hash. QDirListing biedt een API op basis van een iterator voor het doorlopen van de inhoud van mappen.
- In Qt GUI is de mogelijkheid toegevoegd om de instellingen van het systeemkleurenschema te overschrijven, bijvoorbeeld voor de keuze tussen een donkere of lichte modus, evenals instellingen voor acties die het contextmenu oproepen.
- In Qt Sql verwerken de database-drivers voor PostgreSQL en MySQL/MariaDB nu correct de tijd en data wanneer de client en de server de server verschillende tijdzones hebben geselecteerd.
- Qt WebEngine heeft nieuwe klassen toegevoegd: QWebEngineFrame voor het werken op het niveau van afzonderlijke iframe-blokken; QWebEngineClientHints voor het beheren van browseridentificatie; QWebEnginePermission voor het beheren van toegangsrechten met betrekking tot websites.
- In Qt Widgets is de weergave van widgets op schermen met een hoge pixeldichtheid (high-DPI) verbeterd.
- De documentgenerator QDoc is overgestapt van C API naar C++ API en vereist nu minimaal Clang 17 voor zijn werking. Nieuwe commando's zijn toegevoegd, zoals '\keyword' en '\nativetype'.
- In het kader van de stabiliteits- en prestatieverbeteringen van de LTS-release zijn meer dan 500 correcties en optimalisaties aangebracht.
Bron: opennet.ru




