Was ist neu in Qt 6.6
Neue und wiederhergestellte Module in Qt 6.6
Qt 6.6 fügt die folgenden Module und Werkzeuge hinzu:
Neue und wiederhergestellte Module in der technischen Vorschau
Hinweis: Die Stabilität von API und ABI ist nicht garantiert.
Qt Graphs Das Modul
Qt Graphs ist als Ersatzmodul für Qt Data Visualization gedacht. Es verwendet Qt Quick 3D als Rendering-Engine, um Unterstützung für native Grafik-Backends zu bieten, anstatt sich auf OpenGL 2.1 zu verlassen, wie es Qt Data Visualization tut.
Das Modul wird die meisten, wenn nicht alle Funktionen von Qt Data Visualization bieten. Einige erweiterte Funktionen können in der technischen Vorschau unvollständig sein.
Neue Funktionen in Qt 6.6
Qt Core Modul
- Q_NODISCARD_CTOR Makro hinzugefügt, das angewendet werden sollte, um Konstruktoren nodiscard zu markieren. Das Makro löst sich auf
[[nodiscard]]
auf Compilern auf, die es unterstützen, und tut nichts auf anderen Compilern. assign()
Überladungen zu den folgenden Qt Containern hinzugefügt: QVarLengthArray, QList, QByteArray und QString. Diese Funktionen sind eine bequeme Möglichkeit, neue Daten zuzuweisen und gleichzeitig die vorhandenencapacity()
wiederzuverwenden.- Sie können den Inhalt jeder Datei, die dem Ressourcendateisystem hinzugefügt wurde, auslassen, indem Sie die Eigenschaft QT_DISCARD_FILE_CONTENTS source file in CMakeLists.txt angeben. Die Dateiknoten werden beibehalten. Beim manuellen Schreiben von
.qrc
Dateien können Sie den gleichen Effekt erzielen, indem Sie dasempty
Attribut einesfile
XML Knotens auftrue
setzen. - QFileInfo hat eine neue readSymLink()-Mitgliedsfunktion, die den Rohpfad zurückgibt, und neue Überladungen, die eine QTimeZone für Funktionen im Zusammenhang mit Zeitstempeln annehmen.
- Die QProcess::UnixProcessParameters struct und die QProcess::UnixProcessFlag enum können in der neuen QProcess::setUnixProcessParameters()-Mitgliedsfunktion verwendet werden, um Unix-spezifische Einstellungen und Parameter eines Kindprozesses zu ändern, wie z.B. das Schließen fremder Dateideskriptoren.
- Die neue Klasse QNativeIpcKey enthält einen nativen Schlüssel, der von QSharedMemory und QSystemSemaphore verwendet wird und eine bessere Unterstützung für Sandbox-Anwendungen auf Apple-Plattformen bietet. Siehe Native IPC-Schlüssel für weitere Informationen.
- Die meisten Qt-APIs, die mit Zeitspannen arbeiten, wurden auf die relevanten Datentypen von
std::chrono
portiert. - QXmlStreamReader::hasStandaloneDeclaration() meldet, ob das Dokument eine explizite Standalone-Deklaration hat.
Qt GRPC Modul
- QGrpcChannelOptions und QGrpcCallOptions wurden hinzugefügt. Dies sind die neuen Methoden zur Übergabe von Optionen an Kanäle und Aufrufe.
- QGrpcMetadata hinzugefügt, um zusätzliche Metadaten an die Aufrufe zu übergeben.
- Integrierte QML-Types Unterstützung für automatisch generierte QtGRPC Klassen.
Qt GUI Modul
- QFont::setFeatures() für den direkten Zugriff auf OpenType-Features im Font hinzugefügt.
- QPalette QFont::setFeatures() hat jetzt einen accent() Farbeintrag, der standardmäßig die Akzentfarbe des Systems verwendet.
- Die Klassen der QRhi Familie sind nun vollständig dokumentiert und werden als APIs mit einem begrenzten Kompatibilitätsversprechen angeboten. Das Qt Rendering Hardware Interface ist eine 3D-Grafik-API und Abstraktionsschicht für Schattierungssprachen, die von Modulen wie Qt Quick und Qt Quick 3D verwendet wird, um plattformübergreifende, portable Rendering-Engines und Materialsysteme zu implementieren, die auf Direct 3D 11/12, Vulkan, Metal, OpenGL und OpenGL ES aufsetzen können. Anwendungen, die ihr eigenes Low-Level-Rendering durchführen möchten, ohne sich direkt auf potenziell plattformspezifische 3D-APIs und Shading-Sprachen zu verlassen, können nun QRhi und die zugehörigen Klassen verwenden, um eine Qt Quick -Szene zu erweitern, auf QWindow zu rendern, Offscreen-Rendering in eine Textur durchzuführen oder GPU-Rechenlasten zu verteilen. In früheren Qt 6-Versionen waren die QRhi -Klassen vollständig privat und die Dokumentation wurde nicht als Teil der Qt-Standarddokumentation bereitgestellt. Jetzt werden sie ähnlich wie die QPA (QPlatform*)-Klassen behandelt, d.h. sie bilden eine spezielle Gruppe von Klassen, die nicht alle Standardmuster und Quellcode/Binärkompatibilitätsversprechen der öffentlichen Qt-APIs bieten, aber dennoch für die Verwendung durch mittlere/fortgeschrittene Anwendungsentwickler verfügbar sind. Die Dokumentation für die QRhi APIs ist nun Teil der Standard Qt Dokumentation. Außerdem wurde das rhiwindow-Beispiel eingeführt.
- Es wurde ein Direct 3D 12 Backend für QRhi hinzugefügt. Dies hat derzeit keine Auswirkungen auf Anwendungen, da die Standard-Backend-Auswahl von Qt Quick und QQuickWidget weiterhin Direct 3D 11 unter Windows ist und sich dies auch in absehbarer Zukunft nicht ändern wird. Das neue D3D12-Backend sollte vorerst als experimentell betrachtet werden und ist vor allem für Anwendungen nützlich, die Qt dazu bringen müssen, das Rendering über Direct 3D 12 auszuführen, um die Interoperabilität mit der eigenen Rendering- oder Compute-Engine der Anwendung oder einer externen Komponente zu vereinfachen, die D3D12 benötigt.
- Qt 6-Anwendungen können nun benutzerdefinierte oder plattformspezifische Zwischenablageformate unterstützen, indem sie die neuen Klassen QUtiMimeConverter (für macOS) und QWindowsMimeConverter für Windows) verwenden. Diese Klassen sind vereinheitlichte Versionen der QMacPasteboardMime- und QWindowsMime-Typen aus Qt 5. Siehe die Portierungsanleitung für Hilfe bei der Anpassung einer bestehenden Implementierung.
- QTextListFormat::setStart() erlaubt es, eine Textliste mit einem anderen Index als 1 zu beginnen.
Qt Location Modul
- Kartenelemente werden nun korrekter gerendert, einschließlich solcher, die sich um den Globus wickeln oder Löcher enthalten.
- Kartenelemente können nun mit verschiedenen Referenzflächen gerendert werden. Die Aufzählung QLocation::ReferenceSurface bietet die Optionen
Map
undGlobe
, die zusammen mit den Eigenschaften referenceSurface in den Elementtypen verwendet werden können, um zu steuern, ob ein Element auf einer flachen Karte gerendert wird oder der Krümmung des Globus folgt. - Das Mausrad kann die bearing ändern, wenn der Umschaltmodifikator gehalten wird, oder die tilt ändern, wenn der Kontrollmodifikator gehalten wird.
Qt Multimedia Modul
- Die Bibliothek Qt Multimedia fragt nicht mehr nach Audio- oder Videorechten, sondern prüft nur noch, ob diese vorhanden sind oder nicht. Die Client-Anwendungen müssen die Berechtigungen über die C++ oder QML-Berechtigungs-API anfordern.
- Die neue Klasse QWindowCapture bietet Unterstützung für die Aufnahme von Videos einzelner Desktop-Anwendungsfenster innerhalb einer QMediaCaptureSession. Das aufgenommene Video kann an jede Art von Videoausgabe geleitet werden, z. B. an die QMediaRecorder oder an die QVideoWidget. Die Fensteraufnahme wird nur mit dem FFmpeg-Backend unterstützt.
- QMediaRecorder wurde um Eigenschaften erweitert, die eine bessere Kontrolle über Videoqualität, Auflösung und Bitraten ermöglichen.
Qt PDF Modul
- Die neue Klasse QPdfLinkModel stellt die Link-Geometrie und Ziele auf einer bestimmten Seite bereit.
- QPdfDocument::pageModel() implementiert Qt::DecorationRole, um Seiten-Thumbnails bei Bedarf zu rendern.
- Die neue Klasse QPdfPageSelector ist eine spezielle QSpinBox für die Auswahl einer Seite in Widget-basierten PDF-Viewern.
Qt Positioning Modul
- Die Bibliothek Qt Positioning fragt nicht mehr die Standortberechtigungen ab, sondern prüft nur noch, ob sie vorhanden sind oder nicht. Die Client-Anwendungen müssen die Berechtigungen über die C++ oder QML-Berechtigungs-API anfordern.
Qt Protobuf Modul
- Ermöglicht die Verwendung bestimmter Qt Core und Qt GUI Typen als Teil des *.proto Schemas.
- Integrierte QML-Typen-Unterstützung für automatisch generierte QProtobufMessage Klassen.
- Umstellung auf implizit freigegebene Daten für automatisch generierte QProtobufMessage Klassen. Dies ermöglicht den Zugriff auf die Nachrichtentypen by-value aus einem QML-Kontext ohne viele Kopien zu erstellen.
- Hinzufügen der Qt Protobuf Well-Known Types Unterstützung für den google.protobuf.Any Typ.
- Integrierte Unterstützung für den oneof-Typ, ein unionähnlicher Typ in protobuf, der keinen Wert enthalten muss.
Qt Bluetooth Modul
- Die Bibliothek Qt Bluetooth fordert die Bluetooth-Berechtigungen nicht mehr an, sondern prüft nur, ob sie vorhanden sind oder nicht. Die Client-Anwendungen müssen die Berechtigungen über die C++ oder QML-Berechtigungs-API anfordern.
- Qt bietet nun einen nativen 128-bit unsigned int Typ als quint128. Auf Plattformen, die dies unterstützen, verwenden der QBluetoothUuid(quint128) Konstruktor und die QBluetoothUuid::toUInt128() Methode nun diesen Typ anstelle einer benutzerdefinierten Struktur, die frühere Qt Versionen verwendeten. Solange Ihr Code quint128 als einen undurchsichtigen Typ behandelt, ist die Änderung source- und binärkompatibel, aber erwägen Sie die Verwendung der neuen Überladungen unter QUuid::Id128Bytes, falls Sie auf Probleme stoßen. Plattformen, die die 128-Bit-Int-Typen nicht unterstützen (wie MSVC), verwenden weiterhin die benutzerdefinierte Struktur von Qt Bluetooth.
Qt QML-Modul
- Es wurde Unterstützung für die Verwaltung von Anwendungsberechtigungen über QML hinzugefügt. Das Qt Qml Core Modul stellt die Qt C++ Application Permissions Funktionalität für QML über einen Satz von Berechtigungstypen zur Verfügung, die verwendet werden können, um Berechtigungen plattformübergreifend zu prüfen oder anzufordern. Siehe QML Application Permissions für weitere Informationen.
- Das XMLHttpRequest Objekt wurde nun mit zwei weiteren Funktionen aktualisiert, um es moderneren Browsern näher zu bringen. Es wurde die Eigenschaft responseURL hinzugefügt, mit der bestätigt werden kann, ob eine Umleitung stattgefunden hat. Ebenso wurde die Methode overrideMimeType hinzugefügt, mit der das XMLHttpRequest -Objekt die Antwort auf der Grundlage eines bestimmten Mime-Typs analysieren kann und nicht auf der Grundlage dessen, was im Content-Type-Header der Antwort steht.
- Der QML Language Server hat erste Unterstützung für Go-to-Definition und Find-Verwendung erhalten. Er unterstützt auch die vollständige Formatierung von Dokumenten.
- Es ist nun möglich, qmllint mit Plugins zu erweitern. Die Plugin-API befindet sich derzeit in der Tech-Preview.
Qt Quick Modul
- Die Eigenschaft font.features für den direkten Zugriff auf OpenType-Funktionen in der Schriftart wurde hinzugefügt.
- TableView hat eine selectionMode Eigenschaft, um zu steuern, ob einzelne oder mehrere Zellen ausgewählt werden können.
- TreeView verfügt über eine rootIndex Eigenschaft, um nur einen Teilbaum des Modells anzuzeigen.
- AnimatedImage unterstützt jetzt die Eigenschaft sourceSize.
- Mit der Umgebungsvariablen
QT_QUICK_FLICKABLE_WHEEL_DECELERATION
können Sie die Verzögerung nach dem Scrollen mit einer "klickenden" Radmaus anpassen. Standardmäßig ist die Beschleunigung jetzt ausgeschaltet, so dass die Bildlaufdistanz proportional zur Anzahl der "Klicks" ist (es sei denn, die Plattform bietet eine eigene Beschleunigung); Sie können jedoch einen Wert kleiner als 15000 einstellen, um das alte Verhalten wiederherzustellen. Die Eigenschaft flickDeceleration gilt jetzt nur noch für Berührungen. - Die meisten Eigenschaften sind jetzt FINAL, d.h. sie können nicht mehr durch die Deklaration neuer Eigenschaften mit demselben Namen überschattet werden. Es wird eine Warnung ausgegeben, wenn eine
FINAL
Eigenschaft beschattet wird. Wir empfehlen, dass Benutzer solche Eigenschaften umbenennen, um unerwartete Verhaltensänderungen zu vermeiden. - Eine Reihe von QRhi-bezogenen Funktionen wurden in QQuickWindow, QQuickRenderControl und QSGTexture hinzugefügt und veröffentlicht. Die Abfrage der QRhi, QRhiSwapChain, oder QRhiCommandBuffer, die von der Darstellung auf dem Bildschirm oder außerhalb des Bildschirms Qt Quick verwendet werden, ist jetzt vereinfacht. Einige Funktionen, die bisher aus der Dokumentation verborgen waren, weil sie sich auf QRhi* Klassen stützten, wurden sichtbar gemacht. createTextureFromRhiTexture () wurde zu QQuickWindow hinzugefügt und dient als Gegenstück zu createTextureFromImage().
- Die Scenegraph-Beispiele wurden aktualisiert: rhiunderqml wurde hinzugefügt, das alte, nur auf OpenGL basierende fboitem-Beispiel wurde durch ein neues, portables rhitextureitem-Beispiel ersetzt, und das customrendernode-Beispiel wurde aktualisiert. Diese Beispiele demonstrieren die drei Möglichkeiten, eine Qt Quick -Szene mit benutzerdefiniertem 2D/3D-Rendering auf niedriger Ebene zu erweitern (die drei Ansätze sind: Underlay/Overlay, benutzerdefiniertes Element, das durch Rendering auf eine Textur unterstützt wird, benutzerdefiniertes Element mit QSGRenderNode).
- Hinzufügen der Eigenschaft Path::simplified zur automatischen Vereinfachung von Pfaden vor dem Rendering. Dies spiegelt die Funktion QPainterPath::simplified() wider.
- Unterstützung für das Sammeln von GPU-Zeitstempeln für das QQuickWindow's Rendering hinzugefügt. Wenn dies durch QQuickGraphicsConfiguration() setTimestamps() oder die entsprechende Umgebungsvariable aktiviert wird, erscheinen GPU-seitige Zeitstempel in der Debug-Ausgabe, wenn Logging-Kategorien wie
qt.scenegraph.time.renderloop
aktiviert werden, und in Qt Quick 3D() DebugView, als Ergänzung zu den CPU-seitigen Zeitstempeln. Dies wird derzeit von Direct 3D 11, Metal und Vulkan unterstützt (vorausgesetzt, die zugrunde liegende Vulkan-Implementierung unterstützt Zeitstempel-Abfragen). Unterstützung für den Rest der 3D-APIs wird in zukünftigen Versionen eingeführt werden.
Qt Quick Controls Modul
- Die Eigenschaft live wurde zu SpinBox hinzugefügt. Damit wird gesteuert, ob value aktualisiert wird, wenn der Benutzer displayText bearbeitet.
- Das Signal wrapped wurde zu Dial hinzugefügt. Dieses Signal wird ausgegeben, wenn die Wählscheibe umläuft, d.h. über ihren Maximalwert hinaus auf ihren Minimalwert geht oder umgekehrt.
- Die Eigenschaften startAngle und endAngle wurden zu Dial hinzugefügt. Diese Eigenschaften steuern den Start- und Endwinkel der Skala in Grad.
Qt Quick Modul Layouts
- LayoutItemProxy wurde hinzugefügt, ein Hilfselement zum Schreiben von responsiven Layouts (in der technischen Vorschau)
- Die Eigenschaften uniformCellSizes, uniformCellSizes, uniformCellWidths und uniformCellHeights wurden für jeden Layout-Typ hinzugefügt (in der technischen Vorschau)
- StackLayout currentIndex wird nun aktualisiert, wenn ein Element mit einem Index kleiner oder gleich dem aktuellen Index eingefügt oder entfernt wird.
Qt Quick Modul Formen
- Es wurde ein experimentelles Kurven-Rendering-Backend hinzugefügt, das Kurven mit höherer Qualität als der Standard-Geometrie-Renderer rendert und Anti-Aliasing ohne die Verwendung von MSAA anwendet. Es kann über die Eigenschaft Shape::preferredRendererType ausgewählt werden.
Qt Quick 3D Modul
- Es wurde eine QML-API für die prozedurale Erstellung von TextureData mit der Bezeichnung ProceduralTextureData hinzugefügt. Zuvor war dies nur über C++ durch Unterklassifizierung von QQuick3DTextureData möglich.
- Es wurde eine QML-API für die prozedurale Erstellung von Netzgeometrie mit der Bezeichnung ProceduralMesh hinzugefügt. Zuvor war dies nur über C++ möglich, indem man QQuick3DGeometry als Unterklasse anlegte.
- Es ist jetzt möglich, PLY-Dateien zu importieren.
- Unterstützung für die Erstellung von 3D-Texturen mit QQuick3DTextureData wurde hinzugefügt.
- Erste Unterstützung für Renderer Extensions wurde hinzugefügt. Dies ist der erste Schritt, um das Hinzufügen zusätzlicher Durchläufe und die Anpassung der eingebauten Render-Durchläufe zu ermöglichen. View3D hat eine neue Eigenschaft namens extensions, die ein Array von QQuick3DRenderExtension Unterklassen annimmt. Dies wird weiterhin durch die Hilfsfunktionen in QQuick3DExtensionHelpers unterstützt.
Qt Sql Modul
- Ein Plugin für Mimer SQL wurde hinzugefügt
- MySQL/MariaDB erhielt die neuen Verbindungsoptionen MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_TLS_VERSION, MYSQL_OPT_SSL_MODE
- Das ODBC-Plugin gibt nun alle nativen Fehlercodes in QSqlError
- QSqlQuery hat zwei neue Funktionen boundValueName()/boundValueNames()
Qt TextToSpeech Modul
Die Klasse QTextToSpeech hat ein paar weitere Tricks gelernt, die bei allen Engines verfügbar sind:
- Anwendungen können über enqueue mehrere Textabschnitte zu einer Synthese-Engine hinzufügen.
- Das neue Signal aboutToSynthesize wird ausgegeben, kurz bevor ein Textstück synthetisiert wird.
- Die Auswahl einer der von der Engine bereitgestellten Stimmen anhand einer Reihe von Kriterien ist jetzt mit der Memberfunktion findVoices einfach. QML-Code kann darüber hinaus den Typ VoiceSelector als angehängte Eigenschaft verwenden.
Nicht alle neuen Funktionen sind mit jeder Engine verfügbar. Anwendungen können das neue Flag Capabilities und die Eigenschaft engineCapabilities verwenden, um zu prüfen, welche der folgenden neuen Funktionen die aktuell verwendete Engine unterstützt:
- Wenn die Engine über die Funktion Synthesize verfügt, kann QTextToSpeech nun Text in PCM-Daten synthetisieren. Die Funktion synthesize kann mit einem Callable verwendet werden, das PCM-Datenpakete empfängt, wenn sie synthetisiert wurden.
- Wenn die Engine über die Fähigkeit WordByWordProgress verfügt, sendet QTextToSpeech das Signal sayingWord für jedes Wort im aktuellen Textstück, wenn es gesprochen wird.
Qt WebEngine Modul
- Antwort-Kopfzeilen zu QWebEngineLoadingInfo hinzugefügt.
- Ermöglicht das Hinzufügen zusätzlicher Antwort-Header in QWebEngineUrlRequestJob.
- QWebEngineUrlScheme::FetchApiAllowed Flag hinzugefügt, um HTML5 Fetch API für benutzerdefinierte URL-Schemata zu aktivieren.
- qWebEngineGetDomainAndRegistry() Funktion zum Lesen der effektiven Top-Level-Domain, wie Chromium/QtWebEngine sie sieht.
- QWebEngineSettings::DisableReadingFromCanvas Einstellung hinzugefügt, um das Lesen der Leinwand für zusätzlichen Schutz gegen Fingerprinting zu deaktivieren.
Qt Widgets Modul
- QWidget hat eine neue setTabOrder()-Überladung, die eine Initialisierungsliste annimmt, wodurch die gesamte Kette mit einem einzigen Aufruf gesetzt werden kann.
- QMessageBox::Option bietet die Möglichkeit, für jede Messagebox zu steuern, ob eine native Messagebox verwendet werden soll.
Plattform-Änderungen
Desktop-Plattformen
macOS
- Das Erstellen von Benutzerprojekten oder Qt für macOS selbst erfordert nun mindestens CMake Version 3.21.1.
- QMessageBox::setCheckBox() wird nun bei der Verwendung nativer Messageboxen beachtet.
- QFileDialog löst nicht mehr unnötigerweise Berechtigungsdialoge aus.
Mobile Plattformen
Android
- FileProvider-Unterstützung bei Verwendung von QDesktopServices::openUrl() hinzugefügt.
- AndroidX als Standard hinzugefügt (eine Abhängigkeit für FileProvider).
- Einführung der CMake-Richtlinie QTP0002 für android-spezifische Zieleigenschaften.
- Updates für die Liste der Beispiele, die auf Android unterstützt werden.
- Android 13 als die maximal unterstützte Version
- Gradle wurde auf Version 8.3.0 aktualisiert.
- QFileDialog übernimmt alle angegebenen Namensfilter und nicht nur den ausgewählten.
- Aktualisiertes Android-Ziel-SDK-Level auf 33, um die Play Store-Anforderung für 2023 zu erfüllen.
iOS
- Unterstützung für QWindow::setMask() zum Maskieren von Rendering und Eingabe wurde hinzugefügt.
- Unterstützung für Fremdfenster hinzugefügt, um UIViews in QWindows einzubetten.
Eingebettete Plattformen
Boot to Qt
- Unterstützung für Yocto 4.2 (mickledore) wurde hinzugefügt.
- Die Support Levels für Zielhardware wurden mit neuen unterstützten Boards aktualisiert:
- Tier 1 Unterstützung für das NXP i.MX 93 Board wurde hinzugefügt.
- Tier 1 Unterstützung für das Jetson AGX Xavier Board wurde hinzugefügt.
- Tier 3-Unterstützung für die NXP i.MX 8QuadXPlus-Karte hinzugefügt.
- Tier 3-Unterstützung für die Toradex Apalis iMX8-Karte hinzugefügt.
- Toradex und ST Targets verwenden nun die neueste Yocto LTS Version (kirkstone).
© 2025 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.