Das Unternehmen Qt Company hat die Version 6.4 des Frameworks Qt veröffentlicht, in der die Stabilität und die Funktionalitäten der Qt 6-Reihe weiter verbessert wurden. In Qt 6.4 werden die Plattformen Windows 10+, macOS 10.15+, Linux (Ubuntu 20.04, CentOS 8.2, openSUSE 15.3, SUSE 15 SP2), iOS 14+, Android 6+ (API 23+), webOS, WebAssembly, INTEGRITY und QNX unterstützt. Die Quelltexte der Qt-Komponenten werden unter den Lizenzen LGPLv3 und GPLv2 geliefert.
Hauptänderungen in Qt 6.4:
- Es wurde eine vollständige Unterstützung der WebAssembly-Plattform implementiert, die es ermöglicht, Qt-Anwendungen zu erstellen, die im Webbrowser laufen und zwischen verschiedenen Hardware-Plattformen portiert werden können. Anwendungen, die für die WebAssembly-Plattform kompiliert werden, bieten dank JIT-Kompilierung eine Leistung, die nahe an der von nativen Code liegt, und können Qt Quick, Qt Quick 3D und die in Qt verfügbaren Visualisierungswerkzeuge nutzen. Da eine WebAssembly-Anwendung in einer isolierten Umgebung des Browsers ausgeführt wird, ist der Zugriff auf bestimmte APIs für die Arbeit mit lokalen Ressourcen und Betriebssystemdiensten eingeschränkt; jedoch werden zusätzliche APIs für die Integration mit dem Browser bereitgestellt.
- Das Modul Qt TextToSpeech, das in Qt 5 verfügbar war, jedoch nicht in die Qt 6-Reihe aufgenommen wurde, ist zurück im Hauptbestandteil. Das Modul bietet Werkzeuge zur Sprachsynthese, die die Zugänglichkeit von Anwendungen für Menschen mit Behinderungen erhöhen oder neue Möglichkeiten zur Hintergrundinformation der Benutzer implementieren können, beispielsweise zur Ausgabe von Benachrichtigungen in Apps für automobile Informations- und Unterhaltungssysteme. Unter Linux erfolgt die Umwandlung von Text in Sprache mithilfe der Bibliothek Speech Dispatcher (libspeechd), während dies auf anderen Plattformen über die integrierte API des Betriebssystems geschieht.
- Ein experimentelles Modul zur Gestaltung des iOS-Stils für Qt Quick wurde hinzugefügt. Anwendungen, die auf Qt Quick Controls basieren, können dieses Modul automatisch zur Erstellung einer nativen Benutzeroberfläche auf der iOS-Plattform verwenden, ähnlich wie dies in Windows, macOS und Android der Fall ist.


- Ein experimentelles Modul QtHttpServer wurde hinzugefügt, das es ermöglicht, die Funktionalität eines HTTP-Servers in Anwendungen zu integrieren, der HTTP/1.1, TLS/HTTPS, WebSockets, Fehlerbehandlung, Routing von Anfragen basierend auf URL-Parametern (QHttpServerRouter) und REST-APIs unterstützt.
- Ein experimentelles Modul für Qt Quick 3D Physics wurde hinzugefügt, das eine API zur Simulation physikalischer Prozesse bereitstellt und zusammen mit Qt Quick 3D für realistische Interaktionen und Bewegungen von Objekten in 3D-Szenen verwendet werden kann. Die Implementierung basiert auf der PhysX-Engine.
- Das Modul Qt Quick 3D hat experimentelle Unterstützung für globale Beleuchtung mit Lichtkarten hinzugefügt, die es ermöglichen, in 3D-Szenen das Licht von verschiedenen Quellen realistischer zu simulieren. Qt Quick 3D bietet auch Unterstützung für lineare Partikel, glänzende Materialien, erweiterte Reflexionseinstellungen, Skyboxen sowie benutzerdefinierte Materialien und Texturen.

- Die Möglichkeiten der in Qt Quick bereitgestellten Typen TableView und TreeView wurden erweitert, mit Unterstützung für die Navigation über die Tastatur, das Hervorheben von Zeilen und Spalten, eine umfassendere Steuerung der Zellpositionen, Animationen sowie das Ein- und Ausklappen von Baumstrukturen.
- In Qt Quick wurde ein neuer Typ FrameAnimation vorgeschlagen, der es ermöglicht, Code synchron mit den Animationsbildern auszuführen. Um die Flüssigkeit der Animationen in Qt Quick zu verbessern, wurde auch eine automatische Behandlung von fehlerhafter Vsync-Synchronisation bei Multi-Thread-Rendering sichergestellt.

- Im QQuickWidget-Widget, das die Erstellung von Benutzeroberflächen ermöglicht, die Elemente sowohl auf Basis von Qt Quick als auch von Qt Widget kombinieren, wurde die vollständige Unterstützung für die RHI (Rendering Hardware Interface) implementiert, die nicht nur die Verwendung von OpenGL, sondern auch von Vulkan-, Metal- und Direct3D-APIs ermöglicht.
- Im Qt Network-Modul wurde die Klasse QSslServer hinzugefügt, die die Erstellung effizienter Netzwerke ermöglicht, Server, die TLS zur Einrichtung eines sicheren Kommunikationskanals verwenden.
- Im Qt Multimedia-Modul wurde ein experimenteller Backend hinzugefügt, der zur Verarbeitung von Video und Audio das FFmpeg-Paket verwendet. Bei der Video-Wiedergabe wurde die Verarbeitung von Farbräumen und HDR verbessert, und es wurde die Möglichkeit hinzugefügt, Untertitel über QVideoFrames einzufügen. Unterstützung für räumlichen Klang wurde hinzugefügt, um Szenen mit dreidimensionaler Schallverteilung zu erstellen und virtuelle Räume mit Schalleigenschaften basierend auf der Position des Zuhörers, der Raumgröße sowie den Materialien von Wänden und Boden zu simulieren.
- Im Qt Widgets-Modul wurde die Klasse QFormLayout um Funktionen zur Erstellung von Benutzeroberflächen zur Erfassung strukturierter Benutzereingaben erweitert. In der Klasse QWizard, die für die Erstellung mehrstufiger Benutzeroberflächen vorgesehen ist, wurden APIs hinzugefügt, um die Sichtbarkeit von Zeilen in Formularen zu steuern und beliebige Seiten im Wizard zu wechseln.
- In QML wurde die Unterstützung von Werttypen verbessert, was die Übertragung strukturierter Daten von C++ nach QML erleichtert. Solche Typen und Listen von diesen Typen können jetzt ohne Wrapper auf der Basis von QObject in Eigenschaften verwendet werden. Die Funktionen des LSP-Servers wurden erweitert, um die Unterstützung von QML in integrierten Entwicklungsumgebungen zu integrieren. Der QML Type Compiler, der es ermöglicht, die QML-Darstellung in C++-Code zu kompilieren, ist nun standardmäßig aktiviert.
- Die Möglichkeiten zur Arbeit mit Zeichenfolgenliteralen im Code wurden erweitert – die Klassen QStringEncoder und QStringDecoder unterstützen nun alle im ICU (International Components for Unicode) verfügbaren Codierungen.
- In der Klasse QTextDocuments wurde die Unterstützung für Markdown-Formatierung hinzugefügt.
Quelle: opennet.ru




