Neuerungen in Qt 6.4
Neue und wiederhergestellte Module in Qt 6.4
Qt 6.4 enthält die folgenden neuen Module:
- Qt HTTP Server - Ein Modul zur Einbettung eines HTTP-Servers in Qt-Anwendungen. Dieses Modul befindet sich in der Technologievorschau; die Stabilität von API und ABI ist nicht gewährleistet.
- Qt Quick 3D Physics – Ein hochrangiges QML-Modul, das „ Qt Quick 3D “ um Funktionen zur physikalischen Simulation erweitert.
Qt 6.4 führt das Qt TextToSpeech Modul aus Qt 5 wieder ein. Dieses Modul war in Qt 6.3 nicht vorhanden. Es nutzt nun das CMake-Build-System und funktioniert mit Qt 6.
Weitere Details zu den Änderungen an den einzelnen Modulen finden Sie unter „Änderungen an Qt-Modulen in Qt 6“.
Neue Funktionen in Qt 6.4
Qt Core Modul
- „ QLatin1StringView “ wurde als Alias für „ QLatin1String “ hinzugefügt. Dies ist nun der empfohlene Name für die Referenzierung einer Latin-1-Zeichenkette.
- Die Konstruktoren „
QLatin1StringView(const char *, qsizetype)“ und „QLatin1StringView(const char *, const char *)“ sind nun nicht mehr explizit. - Der Literaloperator
_L1wurde hinzugefügt, um Latin-1-Zeichenfolgen- und Zeichenliterale im Namespace Qt::Literals::StringLiterals zu erstellen. - Es wurden die Literaloperatoren `
_s` und `_ba` zum Erstellen von ` QString `- bzw. ` QByteArray `-Literalen im Namensraum ` Qt::Literals::StringLiterals ` hinzugefügt. `_qs` und `_qba` wurden zugunsten von `_s` und `_ba` als veraltet markiert. - Die Funktionen „ QString::count()“ und „ QByteArray::count()“ ohne Parameter wurden als veraltet markiert, um Verwechslungen mit den gleichnamigen Algorithmus-Überladungen zu vermeiden. Sie können durch die Methoden „
size()“ oder „length()“ ersetzt werden. - QStringEncoder QStringDecoder unterstützt nun alle von ICU unterstützten Codecs, sofern Qt mit aktivierter ICU-Unterstützung kompiliert wurde.
- In den Klassen für die Android- und JNI-Entwicklung, QJniObject und QJniEnvironment, wurden Überladungen für callMethod, findMethod und ähnliche Methoden hinzugefügt. Es ist nun möglich, Java-Funktionen aufzurufen und native Methoden zu registrieren, ohne eine Signaturzeichenfolge anzugeben.
- Die neue Template-Funktion ` QJniObject::construct()` ermöglicht die Instanziierung einer Java-Klasse aus C++, ohne dass ein Typ oder eine Signaturzeichenfolge angegeben werden muss.
- QByteArray verfügt nun über eine Instanzmethode `percentDecoded()` als Alternative zum Aufruf der statischen Methode `fromPercentEncoding()` auf der Instanz.
- QTextStream unterstützt nun die Ein- und Ausgabe von `char16_t`.
- QStringView verfügt nun über eine localeAwareCompare()-Methode und kann mit count() zählen, wie oft eine bestimmte Teilzeichenfolge vorkommt.
- QDate kann nun aus verschiedenen „std::chrono“-Strukturtypen vom Typ „Jahr-Monat-Tag“ konstruiert werden, sofern verfügbar, und verfügt über eine addDuration()-Methode, die einen „std::chrono::days“-Wert akzeptiert, sofern verfügbar.
- QDateTime erhält ebenfalls eine addDuration(std::chrono::milliseconds) sowie arithmetische Operatoren zum Addieren oder Subtrahieren desselben Typs, eine Differenzfunktion für „ QDateTime “-Werte, die diese zurückgibt, und einige statische Pseudokonstruktoren, die verschiedene std::chrono-Typen entgegennehmen, welche einen Zeitpunkt beschreiben.
- QTimeZone::fromStdTimeZonePtr(const std::chrono::time_zone *) wurde hinzugefügt.
- QCalendarDie Konstruktion nach Namen akzeptiert nun QAnyStringView.
Qt GUI Modul
- QTextDocumentFragment::toMarkdown(), QTextDocumentFragment::fromMarkdown() und QTextCursor::insertMarkdown() wurden hinzugefügt.
Qt Quick Modul
- TableView wurde um mehrere neue Eigenschaften und Funktionen erweitert, die die Unterstützung für die Tastaturnavigation und -auswahl, die Auswahl von Zeilen und Spalten, Animationen, die Positionierung von Unterzellen und vieles mehr verbessern.
- TreeView unterstützt nun Auswahlen und verfügt über eine erweiterte API zum rekursiven Ein- und Ausklappen von Knoten in der Baumstruktur.
- QQuickWidget funktioniert nun zusätzlich zu OpenGL mit allen unterstützten 3D-Grafik-APIs (Vulkan, Metal, Direct3D 11). Anwendungen müssen bei der Verwendung von „ QQuickWidget “ das Rendern nicht mehr zwingend über OpenGL erzwingen.
- Es wurde Unterstützung für Arrays kombinierter Bild-Sampler in Shadern hinzugefügt, die mit benutzerdefinierten Materialien verwendet werden. Dies wird durch die neue Funktion ` QSGMaterialShader::combinedImageSamplerCount()` und die erweiterte Semantik des bestehenden Arguments `
texture` von ` QSGMaterialShader::updateSampledImage()` unterstützt. - Es wurde die Unterstützung für die Änderung des Polygon-Rasterisierungsmodus von „
solid“ zu „line“ in ` QSGMaterialShader::GraphicsPipelineState` hinzugefügt. (Verfügbar nur, wenn die verwendete 3D-API dies unterstützt.) - ShaderEffectSource.format und „ layer.format “ waren in früheren Qt-6-Versionen nicht sinnvoll, da die veralteten Werte in der Praxis ignoriert wurden. Dies ist nun dokumentiert, und es wurden neue, tatsächlich nützliche Werte eingeführt, insbesondere um bei Bedarf die Anforderung von Gleitkomma-Texturen (FP16 oder FP32) anstelle von RGBA8 zu ermöglichen.
- Es wurde ` QQuickRenderTarget::fromPaintDevice()` hinzugefügt, wodurch die Umleitung der Ausgabe von einem ` QQuickWindow ` auch unter Verwendung des `
software`-Backends ermöglicht wird. - In ` QQuickRenderTarget ` wurden Überladungen hinzugefügt, die die Angabe des nativen Formats des Textur- oder Bildobjekts ermöglichen. Dies ist in einigen fortgeschrittenen Anwendungsfällen relevant, in denen mit nativen Texturen gearbeitet werden muss, die nicht im RGBA8-Format vorliegen. Beachten Sie, dass nur native Formate akzeptiert werden, die von der Rendering-Infrastruktur von Qt unterstützt werden.
- Es wurde ` setMirrorVertically()` zu ` QQuickRenderTarget` hinzugefügt, wodurch der „ Qt Quick “-Renderer aufgefordert werden kann, seine Matrizen so anzupassen, dass vertikal gespiegelte Ergebnisse erzielt werden, wenn das 3D-API-basierte Rendering in eine Textur umgeleitet wird.
- Qt Quick Unter Windows wird nun versucht, die Software-Rasterisierungsplattform von Direct 3D (WARP) zu verwenden, falls das primäre Grafikgerät nicht mit Qt kompatibel ist, ohne dass Umgebungsvariablen manuell gesetzt werden müssen.
- Der „
threaded“-Render-Loop des „ Qt Quick “-Scenegraphs wurde um einfache Heuristiken erweitert, um fehlerhafte VSync-basierte Drosselung zu erkennen. Wenn Frames zu schnell gerendert/dargestellt werden, ohne den Render-Thread zu blockieren, wechselt das System nun automatisch zum regulären, timerbasierten Ansatz für die Ausführung von Animationen und verhindert so, dass QML-Animationen zu schnell ablaufen. - „ FrameAnimation “ für benutzerdefinierte Animationen wurde hinzugefügt. Ermöglicht die Ausführung benutzerdefinierter Skripte synchron mit den Animationsframes.
Qt Quick Controls Modul
- Ein neuer, nativ anmutender Stil für iOS, „iOS Style“, wurde als Tech Preview hinzugefügt.
- TreeViewDelegate verfügt über drei neue Eigenschaften, die beschreiben, ob es im „ TreeView “ aktuell, ausgewählt oder hervorgehoben ist.
Qt Quick Dialogs Modul
- ColorDialog wurde hinzugefügt. Auf Plattformen, die dies unterstützen, handelt es sich um einen nativen Dialog, auf anderen Plattformen um einen nicht-nativen „ Qt Quick “-Dialog.
Der nicht-native Dialog unterstützt alle nicht-nativen Stile: „Basic“, „Fusion“, „Imagine“, „Material“ und „Universal“.
Qt Widgets Das Modul
- QFormLayout verfügt über die neuen Member-Funktionen ` isRowVisible()` und ` setRowVisible()`, deren Überladungen das Ausblenden und Einblenden von Zeilen nach Index, Eingabe-Widget oder Zeilenlayout ermöglichen.
- QKeySequenceEdit verfügt über eine neue Eigenschaft „ clearButtonEnabled “. Verwenden Sie diese, um zu steuern, ob das Widget eine Schaltfläche zum Löschen anzeigt, mit der der Benutzer den Eingabeinhalt löschen kann.
- QWizard verfügt über einen neuen Slot „ setCurrentId “, der es Anwendungen ermöglicht, zu einer Seite zu wechseln, ohne die Seiten zwischen der aktuellen Seite und der Zielseite zu durchlaufen.
Qt Network Modul
- QSslServer wurde hinzugefügt. Dies vereinfacht die Erstellung eines Servers, der ausschließlich über TLS kommuniziert.
- QNetworkInformation verfügt nun über „loadBackendByFeatures(Features)“ und „loadBackendByName(QStringView)“, die letztendlich die entsprechenden überladenen Funktionen „load(Features/QStringView)“ ersetzen sollen, die nun als veraltet markiert sind.
Qt Test Modul
- QTestEventLoop::enterLoopMSecs() verwendet nun einen PreciseTimer, wenn das Timeout weniger als eine Sekunde beträgt.
- Benutzerdefinierte Implementierungen von `QTest::compare()` sollten nun alle Aufrufe von `QTest::compare_helper()` so anpassen, dass eine der beiden neuen Überladungen anstelle der alten verwendet wird, die nun veraltet ist (damit die Zeichenfolgen zur Darstellung von Werten in einem Fehlerbericht nur dann generiert werden, wenn die Prüfung tatsächlich fehlschlägt).
- QAbstractItemModelTester::setUseFetchMore() wurde hinzugefügt.
- Die neuen Makros `QCOMPARE_{EQ,NE,GT,GE,LT,LE}()` unterstützen Vergleiche mit einer Berichterstattung, die der von ` QCOMPARE()` ähnelt. Das EQ-Makro führt exakte Vergleiche durch, ohne die Anpassungen von ` QCOMPARE()`. Dazu gehören auch die üblichen Varianten `QTRY_COMPARE_*()` und `QTRY_COMPARE_*_WITH_TIMEOUT()`.
Qt Qml-Modul
- QML-Sprache
- Sie können nun benannte benutzerdefinierte Werttypen registrieren. Das heißt, das Argument für ` QML_VALUE_TYPE ` wird nicht mehr ignoriert. Es muss in Kleinbuchstaben geschrieben sein. Nach der Registrierung können Sie Eigenschaften Ihrer eigenen Werttypen in QML deklarieren.
- Sie können nun jeden benannten Werttyp in einer Liste in QML speichern. Beispielsweise entspricht `list<rect>` in QML einem ` QList<QRectF>` in C++. Dadurch entfällt die Notwendigkeit, für solche Eigenschaften `var` zu verwenden oder ihre Elemente in Objekte zu verpacken.
- Mit dem neuen Pragma „ComponentBehavior“ können Sie festlegen, ob in einer QML-Datei definierte Komponenten außerhalb ihres Erstellungskontexts verwendet werden dürfen. Ist dies nicht der Fall (pragma ComponentBehavior: Bound), kann der „ Qt Quick “-Compiler Ihren Code besser optimieren.
- Modulsystem
- Die „
import“-Direktive in qmldir-Dateien wurde um die Unterstützung für Standardimporte erweitert, sodass Module Importe angeben können, von denen qmllint ausgehen soll, obwohl sie optional sind.
- Die „
- QML-Typ-Compiler (qmltc)
- Erweiterte QML-Sprachabdeckung
- QML-Skript-Compiler (qmlsc, qmlcachegen)
- Verschiedene Operationen auf Listen von Werttypen werden nun in C++ kompiliert.
- Toter Code und tote Speicherzuweisungen werden nun aggressiver optimiert.
- Typkonvertierungen finden nun an der Stelle statt, an der ein Wert geschrieben wird, und nicht an der Stelle, an der er gelesen wird. Wird der Wert mehrfach gelesen, ist dies schneller.
- QML-Linter (qmllint)
- qmllint wurde um Plugin-Unterstützung erweitert, um modulspezifische Diagnosen und Verhaltensweisen zu ermöglichen.
- Es wurden neue Warnungen bezüglich der korrekten Verwendung von „ QtQuick “ und QtQuick.Controls
- QML Language Server (qmlls)
- Unterstützung für Code-Vervollständigung hinzugefügt
- Es wurden Code-Aktionen zur Behebung einiger Linter-Warnungen/Hinweise hinzugefügt
- Die ausführbare Datei wurde in den Ordner „libexec“ verschoben
- Bereinigung der CMake-API:
- Die Funktion`qt_target_compile_qml_to_cpp() `, die zum Aufruf des QML-Typ-Compilers verwendet wurde, ist veraltet. Ihre Funktionalität wurde in ` qt_add_qml_module()` integriert
Qt Quick 3D Modul
- Eine Vorschau auf die Unterstützung für das Baking von Lightmaps wurde hinzugefügt. Dies bietet eine statische Lösung für die globale Beleuchtung mit Lightmaps, die mittels Raytracing vorab generiert wurden. Weitere Details finden Sie unter „Lightmaps und globale Beleuchtung “.
- SpecularGlossyMaterial wurde hinzugefügt, um die Verwendung des Specular/Glossiness-Workflows anstelle von Metalness/Roughness zu ermöglichen.
- Der Typ „ LineParticle3D “ wurde hinzugefügt, der die Erstellung von linienförmigen Sprite-Partikeln ermöglicht.
- Die Eigenschaft „ Model.castsReflection “ wurde hinzugefügt, um zu steuern, ob ein Modell von Reflection Probes gerendert wird und ob es in Reflexionen sichtbar ist. Die gleiche Eigenschaft wurde auch für „ sprite particles “ eingeführt.
- Die Eigenschaft „ ReflectionProbe.boxOffset “ wurde hinzugefügt, um die Box relativ zur Position der Probe zu verschieben, ohne die Position des Erfassungspunkts zu beeinflussen.
- Die Eigenschaft „ ReflectionProbe.debugView “ wurde hinzugefügt, um einen Würfel anzuzeigen, der die Probe-Box visualisiert.
- „ HeightFieldGeometry “ wurde hinzugefügt, um die Erstellung einer Höhenfeld-Geometrie aus einer Bilddatei zu ermöglichen.
- CubeMapTexture wurde hinzugefügt, um benutzerdefinierte Materialien und Nachbearbeitungseffekte mit Cube-Map-Texturen in den Shadern zu ermöglichen. Als Eingabe dient entweder ein „
.ktx“-Container mit Bilddaten für alle 6 Flächen oder 6 einzelne Bilddateien. - Unterstützung für das Rendern einer Skybox aus einer Cubemap anstelle der Light Probe hinzugefügt. Dies kann durch die Einstellung des Hintergrundmodus SceneEnvironment.SkyBoxCubeMap angefordert werden.
- Es wurde die Option „ ProceduralSkyTextureData “ hinzugefügt, um eine HDR-Light-Probe oder eine Skybox-Textur prozedural zu generieren.
- Verbessertes Schatten-Rendering für Punkt- und Spotlichter.
- Die Eigenschaft „ renderFormat “ wurde zu „ View3D “ hinzugefügt, um die Angabe des Backing-Texturformats zu ermöglichen, wenn der „ View3D “ seinen (standardmäßigen) Offscreen-Rendermodus verwendet. Die verfügbaren Werte entsprechen denen von „ ShaderEffectSource.format “ (das selbst in Version 6.4 ebenfalls überarbeitet wurde). Dies ermöglicht die Verwendung von Fließkomma-Texturen anstelle des standardmäßigen RGBA8.
- Die Unterstützung für den Import von UIP-Dateien wurde entfernt. Die Zuordnung von alten „ Qt 3D Studio“-Funktionen zu „ Qt Quick 3D “ war bereits in früheren Versionen problematisch. Daher wurde in Qt 6.4 die Unterstützung für „
.uip“-Dateien aus dem „balsam“-Tool entfernt.
Das Qt-Connectivity-Modul
- QNdefMessage wird nicht mehr exportiert. Diese Klasse erbt öffentlich von „ QList “, doch „ QList “ ist nicht dafür ausgelegt, von einer exportierten Klasse geerbt zu werden.
Warnung: Dies ist nicht abwärtskompatibel, verhindert jedoch künftige Abwärtskompatibilitätsbrüche.
- In „ Qt Bluetooth “ werden verschiedene Fehler-Enums um neue Fehlercodes erweitert, die einen Fehler aufgrund fehlender Berechtigungen darstellen. Derzeit werden diese Codes unter Android und macOS/iOS verwendet. Siehe „ QBluetoothLocalDevice::MissingPermissionsError “ als Beispiel.
Qt WebEngine Modul
- HTML5-API für den Dateisystemzugriff hinzugefügt, gesteuert durch QWebEngineFileSystemAccessRequest
- QWebEngineLoadingInfo verbesserte Fehlercodes gesteuert wird, insbesondere bei HTTP-Fehlern
- QWebEngineView::setPage() funktioniert nun auch auf bereits geladenen Seiten
- QWebEngineSettings::NavigateOnDrop hinzugefügt, um die Navigation beim Drag-and-Drop von URLs zu deaktivieren
- QWebEngineUrlRequestInfo::ResourceTypeWebSocket hinzugefügt, um das Abfangen von WebSocket-Verbindungen zu ermöglichen
Plattformänderungen
WebAssembly
Qt wird nun vollständig auf der WebAssembly-Plattform unterstützt. Weitere Informationen finden Sie in der Plattformdokumentation unter Qt für WebAssembly.
Mobile Plattformen
Android
- Gradle wurde auf Version 7.4.2 und das Android Gradle Plugin auf Version 7.2.1 aktualisiert.
- Das NDK wurde auf r23b (23.1.7779620) aktualisiert.
- Die CMake-Variablen QT_ANDROID_SIGN_APK und QT_ANDROID_SIGN_AAB wurden hinzugefügt, um signierte Pakete direkt aus CMake heraus zu erstellen.
- Android Accessibility erkennt nun Scroll-Ereignisse.
- Die Ladegeschwindigkeit von Assets für Android-Apps wurde verbessert.
Eingebettete Plattformen
Boot to Qt
- Boot to Qt Der Stack wurde aktualisiert und verwendet nun Yocto 4.0.3 (kirkstone).
- NXP i.MX8M Plus LPDDR4 EVK wurde als neues Referenzgerät hinzugefügt.
QNX
- Unterstützung für Qt Multimedia.
WebOS
- Qt 6.4 wurde für die Verwendung mit LG webOS OSE 2.18.0 (Qt für webOS) verifiziert.
Liste der API-Änderungen
Diese Seiten enthalten eine Übersicht über die API-Änderungen in Qt 6.4:
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.