Die Qt Company hat die Version 6.8 des Qt-Frameworks veröffentlicht, in der die Stabilisierung und Erweiterung der Qt 6-Reihe fortgesetzt wird. Qt 6.8 bietet Unterstützung für die Plattformen 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 und QNX. Die Quellcodes der Qt-Komponenten werden unter den Lizenzen LGPLv3 und GPLv2 bereitgestellt.
Qt 6.8 hat den Status eines LTS-Releases erreicht, für das über einen Zeitraum von fünf Jahren Updates für Inhaber einer kommerziellen Lizenz bereitgestellt werden, was zwei Jahre länger ist als bei früheren LTS-Releases. Für nicht-kommerzielle Nutzer beträgt die Supportdauer sechs Monate (bis zur Veröffentlichung eines neuen signifikanten Releases). Der Support für die frühere LTS-Version Qt 6.5 dauert bis Mai 2026, während der Support für die Vorgänger-LTS-Version Qt 6.2 am 30. September 2024 eingestellt wird. Die Version Qt 5.15 wird bis Mai 2025 supportet.
Die wichtigsten Änderungen in Qt 6.8:
- Das Modul Qt Graphs, das für die Erstellung verschiedener Arten von 2D- und 3D-Diagrammen sowie für die Visualisierung großer Sammlungen schnell wechselnder Daten gedacht ist, wurde stabilisiert und zu einem vollständig unterstützten Modul ernannt. Das Modul entwickelt sich als universeller Ersatz für das alte Qt DataVisualization-Modul, das auf OpenGL basiert, und das Modul Qt Charts. Das neue Modul nutzt Qt Quick 3D und die Rendering-Hardware-Schnittstelle RHI (Rendering Hardware Interface), die verschiedene 3D-APIs (OpenGL, Vulkan, Metal und Direct 3D) unterstützt.
Im Vergleich zur vorherigen Version wurden in Qt Graphs 3D Leistungsoptimierungen hinzugefügt, die Unterstützung von Transparenz in 3D-Diagrammen (Bars3D) bereitgestellt, die Möglichkeiten zur Steuerung von Position und Design von Beschriftungen und Überschriften erweitert sowie die Zeichnung der Navigationsgitterlinien verbessert. In Qt Graphs 2D wurde die Möglichkeit zur Erstellung eigener Arten von Säulendiagrammen (über QML-Komponenten) bereitgestellt, Unterstützung für gestapelte Säulendiagramme hinzugefügt und die Mittel zur Anzeige von Beschriftungen erweitert. Die API zur Verwendung von Gestaltungsthemen in 2D- und 3D-Diagrammen wurde vereinheitlicht. Widget-spezifische Aufrufe wurden in das Modul Qt Graphs Widgets verschoben.
- Der stabilisierte und als vollständig unterstützt eingestufte QtHttpServer-Modul ermöglicht die Integration von HTTP-Serverfunktionalität in Anwendungen, die HTTP/1.1, TLS/HTTPS, WebSockets, Fehlerbehandlung und routenbasierte Anfragen auf Basis von URL-Parametern (QHttpServerRouter) sowie REST-API unterstützen. Im Vergleich zur vorherigen Version ermöglicht die Klasse QNetworkAccessManager das Senden von HTTP-Anfragen über einen lokalen Socket. Darüber hinaus wurde Unterstützung für die Verwendung der Klasse QFormDataBuilder bereitgestellt, um das Übertragen mehrerer Datensätze (z. B. Textdaten und angehängte Dateien) in einer einzigen HTTP-Anfrage (HTTP-Multi-Part) zu erleichtern.
- Der stabilisierte und als vollständig unterstützt eingestufte Qt GRPC-Modul ermöglicht den Zugriff auf Dienste über das gRPC-Protokoll.
- Der stabilisierte und als vollständig unterstützt eingestufte Qt Protobuf-Modul ist für die Serialisierung von Qt-Klassen unter Verwendung des Protocol Buffer-Protokolls gedacht.
- Unterstützung für die mobilen Plattformen Android 14 und iOS 18 wurde hinzugefügt.
- Die Möglichkeit zur Entwicklung von Anwendungen für Desktop-Systeme Linux und Windows auf ARM-Prozessoren sowie für 3D-Headsets wie Apple Vision Pro und Meta Quest 3 XR wurde bereitgestellt.
- Unterstützung für Raspberry Pi 5, NVIDIA AGX Orin und einige Karten auf Basis von SoC NXP, Toradex und STM wurde hinzugefügt. Unterstützung für RISC-V-Karten StarFive VisionFive 2 wurde ebenfalls hinzugefügt.
- Die Möglichkeiten zur Erstellung von abgespeckten Qt-Builds, die auf Geräten mit begrenztem Speicher verwendet werden können, wurden erweitert. Beispielsweise kann durch das Deaktivieren ungenutzter Funktionen und Komponenten von Qt die Größe des Builds im dauerhaften Speicher um 77 % und der RAM-Verbrauch um 32 % reduziert werden, wodurch auch die Startzeit erheblich verkürzt wird.
- Im Qt Multimedia-Modul auf der Linux-Plattform wurde die Unterstützung für die Bildschirmaufnahme mithilfe der Klasse QScreenCapture in Umgebungen auf Basis des Wayland-Protokolls implementiert, wobei der ScreenCast-Dienst und das XDG Desktop-Portal-System verwendet werden. Klassen wie QVideoFrameInput, QAbstractVideoBuffer und QAudioBufferInput wurden hinzugefügt, um den Versand eigener Multimedia-Daten in einer Aufnahme-Sitzung (QMediaCaptureSession) zu organisieren, sowie die Klasse QAudioBufferOutput, um Verarbeiter zu verbinden, die Audiodaten nach der Dekodierung empfangen.
- Das Qt Quick Vector Image-Modul wurde hinzugefügt, das die Integration von Vektorgrafiken im SVG-Format in Qt Quick-Szenen ermöglicht. Dies kann beispielsweise verwendet werden, um skalierbare UI-Elemente zu erstellen, die unabhängig von Auflösung und Bildschirmgröße sind.

- Das Qt Quick 3D XR-Modul wurde hinzugefügt, um Anwendungen für virtuelle und erweiterte Realität mithilfe von Qt Quick 3D-Technologien zu erstellen. Für die Interaktion mit den durch Qt Quick 3D geschaffenen 3D-Umgebungen wird die Nutzung von Handverfolgungsgeräten und VR-Controllern unterstützt. Zur Visualisierung können Apple VisionPro-Brillen oder 3D-Headsets mit OpenXR-Standard wie Meta Quest 2/3 verwendet werden.

- In Qt Quick wurden Optimierungen hinzugefügt, die das Rendering komplexer Szenen beschleunigen. In der TableView-Klasse ist jetzt die Möglichkeit vorhanden, Spalten und Zeilen zu verschieben. In den Typen Image und BorderImage wurde die Unterstützung für das asynchrone Laden von Bildern implementiert (das alte Bild bleibt sichtbar, während das neue geladen wird).
- Das Qt Quick Effect Maker-Modul unterstützt jetzt das Animieren von Sprites, das Verformen von Elementen in Rundungen sowie die Verwendung von Glüheffekten und selektiver Unschärfe (masked blur).
- Im Qt Quick Shapes-Modul ist es nun erlaubt, beim Füllen von Konturen in Elementen des Typs ShapePath beliebige Texturanbieter zu verwenden. In der Klasse QQuickRenderTarget wurden neue Methoden hinzugefügt, um die Verarbeitung von Texturen zu steuern und die Integration von Qt Quick 3D mit externen Engines, Frameworks und APIs zu erleichtern.
- In Qt Quick Controls wurde ein neuer Fluent WinUI3-Stil vorgeschlagen, der es ermöglicht, eine Benutzeroberfläche zu erstellen, die wie Windows 11 auf allen Plattformen aussieht. In macOS wurde die Verwendung des von der Plattform bereitgestellten globalen Menüs in den mit Quick MenuBar erstellten Benutzeroberflächen implementiert.

- In Qt Quick 3D wurde das Rendering von Schatten verbessert, dank der Verwendung von kaskadierten Schattenkarten und weicher Schattenfilterung. Im Typ PrincipledMaterial wurden neue Eigenschaften hinzugefügt. Es besteht die Möglichkeit, in eigenen Materialien dieselben Eigenschaften wie in Materialien vom Typ PrincipledMaterial zu verwenden.

- In das Qt Network Auth-Modul wurde die Klasse QOAuthUriSchemeReplyHandler hinzugefügt, um Handler für Umleitungen zu einem anderen URI-Schema bei der Authentifizierung mit OAuth 2.0 zu erstellen. In die Klasse QOAuth2AuthorizationCodeFlow wurde die Unterstützung für die OAuth-Erweiterung PKCE (Proof Key for Code Exchange) integriert.
- In die Klasse QDnsLookup wurde die Möglichkeit hinzugefügt, Anfragen über "DNS over TLS" zu senden, und es wurde die Unterstützung für TLSA-DNS-Einträge (TLS Certificate Association) implementiert, sodass der Client über die Verifizierung von DNS-Serverdaten informiert wird.
- In Qt Core wurde die Klasse QChronoTimer mit einer Bindung an die Bibliothek std::chrono hinzugefügt, die eine höhere Präzision bei zeitbezogenen Operationen ermöglicht. Es wurde die Möglichkeit geschaffen, die Größe von QString, QByteArray und QList ohne Dateninitialisierung zu ändern. QHash unterstützt jetzt das Speichern von Daten mit den Typen QString und QStringView in einem einzigen Hash. In QDirListing wurde eine API auf Iteratorbasis bereitgestellt, um den Inhalt von Verzeichnissen zu durchlaufen.
- In Qt GUI wurde die Möglichkeit zur Überschreibung der Einstellungen des Systemfarbthemas bereitgestellt, beispielsweise zur Auswahl eines dunklen oder hellen Modus sowie zur Anpassung von Aktionen, die das Kontextmenü aufrufen.
- In Qt Sql verarbeiten die Datenbanktreiber für PostgreSQL und MySQL/MariaDB jetzt korrekt Zeit und Daten, wenn beim Client und auf Server unterschiedliche Zeitzonen ausgewählt sind.
- Qt WebEngine wurden neue Klassen hinzugefügt: QWebEngineFrame zum Arbeiten auf der Ebene einzelner iframe-Blockelemente; QWebEngineClientHints zur Steuerung der Browseridentifikation; QWebEnginePermission zur Verwaltung von Zugriffsrechten in Bezug auf Websites.
- In Qt Widgets wurde die Darstellung von Widgets auf hochauflösenden Bildschirmen (High-DPI) verbessert.
- Der Dokumentationsgenerator QDoc wurde von C API auf C++ API umgestellt, und es wird nun mindestens Clang 17 für seine Nutzung benötigt. Neue Befehle wie "\keyword" und "\nativetype" wurden hinzugefügt.
- Im Rahmen der Bemühungen um die Stabilität und Leistung der LTS-Version wurden über 500 Fehlerbehebungen und Optimierungen vorgenommen.
Quelle: opennet.ru




