Was ist neu in Qt 6.9

Neue Funktionen in Qt 6.9

Qt Core Das Modul

  • QString::arg() hat nun Unterstützung für UTF-8 (QUtf8StringView) und QAnyStringView Argumente. Die Übergabe von C-String-Literalen oder QByteArrays an arg() konvertiert nun nicht mehr implizit zuerst nach QString.
  • QAnyStringView und QUtf8StringView haben jetzt ein (multi-)arg(), wie QStringView und QLatin1StringView bereits hatten. Diese unterstützen auch QUtf8StringView und QAnyStringView Argumente, wie die QString Version.
  • QJniArray kann nun ein leeres Array mit fester Größe erzeugen und Werte in einem Array mit einem nicht-konstanten Iterator ändern oder operator[]
  • QLocale::uiLanguages() enthält nun Rückfalleinträge, die durch Entfernen späterer Namensbestandteile erhalten werden. Aufrufer, die solche Trunkierungen selbst vorgenommen haben, werden nun ermutigt, darauf zu vertrauen, dass QLocale die richtigen Dinge und die richtige Reihenfolge kennt, um sie zu versuchen.
  • QLocale::bcp47Name() stellt das C-Locale nun als "en-POSIX" dar, um es vom einfachen "en" zu unterscheiden und besser mit der BCP47-Spezifikation übereinzustimmen. Die Variante POSIX wird nun ebenfalls als die C-Locale erkannt, wenn sie aus ihrem Namen konstruiert wird.
  • QTimeZone::abbreviation() unter Windows gibt nun eine Abkürzung statt des vollständigen Namens zurück.
  • QTimeZone::displayName() sollte nun tatsächlich auf allen Plattformen lokal angepasste Namen für Zonen liefern, während dies vorher auf einigen Plattformen nicht möglich war.
  • Die Konvertierung von Zeitstempel-Strings mit einem Zeitzonenteil in QDateTime erkennt nun Langform-Anzeigenamen von Zonen.
  • QMetaEnum und QFlags können nun Typen unterstützen, die bis zu 64-Bit benötigen.
  • QJsonValue kann nun JSON mit fromJson und toJson direkt parsen und serialisieren, ohne den Umweg über QJsonDocument. Dies ermöglicht das Parsen und Serialisieren von primitiven Werten wie Strings oder Zahlen sowie von zusammengesetzten Werten.
  • QThread Die neue Funktion setServiceLevel ermöglicht es, den OS-Thread-Quality-of-Service-Hinweis zu setzen.
  • QThreadPool kann auch die Dienstgüte für seine Threads mit setServiceLevel festlegen.
  • QFile::supportsMoveToTrash() meldet, ob QFile::moveToTrash() auf dem aktuellen Betriebssystem implementiert ist.
  • QIODevice::readLineInto() ermöglicht das Lesen einer Datenzeile in einen vorab zugewiesenen Puffer.
  • Verwenden Sie das neue Makro Q_STATIC_LOGGING_CATEGORY, um eine Protokollierungskategorie zu deklarieren, die nur in einer einzigen Übersetzungseinheit verwendet wird.
  • Rufen Sie die neue Methode QSortFilterProxyModel::beginFilterChange() auf, um sicherzustellen, dass Änderungen des gefilterten Inhalts korrekt erkannt werden.
  • QTimerEvent::matches() erleichtert die Prüfung, ob ein Timer-Ereignis zu einem bestimmten QBasicTimer gehört.
  • QUuid::createUuidV7() ermöglicht die Erstellung eindeutiger Bezeichner auf der Grundlage von RFC9562.
  • QCommandLineParser::showMessageAndExit() bietet eine bequeme Möglichkeit, dem Benutzer eine Informations- oder Fehlermeldung anzuzeigen, bevor die Anwendung beendet wird.
  • QHash Die APIs tryEmplace und insertOrAssign wurden an die entsprechenden APIs der Standardbibliothek angepasst.
  • QSpan kann jetzt chop und slice variabel große Spannen.

Qt Graphs Modul

  • Unterstützung für Transparenz in Surface3D hinzugefügt, unter Verwendung der ordnungsunabhängigen Transparenz von QtQuick3D. Bislang wurde nur eine ungefähre Technik (WeightedBlended) in QtQuick3D implementiert, so dass noch keine genauen Techniken verwendet werden können.
  • rootNode wurde hinzugefügt, um das Einfügen von Graphen in View3D in QtQuick3D Anwendungen zu ermöglichen.
  • Eine weitere Picking-Methode, doRayPicking, wurde hinzugefügt, um mit View3D Grapheninjektionen verwendet zu werden.
  • Die Klasse QSpline3DSeries wurde hinzugefügt, damit Benutzer ihre Daten in Splines darstellen können.
  • Die Eigenschaft valueColoringEnabled wurde zu Bars3D hinzugefügt, die es ermöglicht, jeden Balken basierend auf seinem Wert separat zu färben.
  • Die Eigenschaft scaleLabelsByCount wurde zu QAbstract3DAxis hinzugefügt, mit der Benutzer definieren können, ob Achsenbeschriftungen auf der Grundlage der Gesamtmenge der Beschriftungen skaliert werden sollen.
  • Die Eigenschaft labelSize wurde zu QAbstract3DAxis hinzugefügt, die es dem Benutzer ermöglicht, die Größe der Achsenbeschriftungen für jede Achse festzulegen.
  • Unterstützung für die Einstellung der minimalen und maximalen Drehungen in X- und Y-Richtung zu Bars3D, Scatter3D und Surface3D hinzugefügt.
  • Die Eigenschaft alignment wurde zu QAbstractAxis hinzugefügt und ermöglicht es dem Benutzer, die Achsen links, rechts, oben oder unten auszurichten.
  • Die Eigenschaft plotArea wurde zu QGraphsView hinzugefügt, so dass Benutzer das Rechteck definieren können, in dem ein Graph gezeichnet wird.
  • Unterstützung für Zoomen und Schwenken zu QGraphsView hinzugefügt.
  • Unterstützung für benutzerdefinierte Eingaben in Flächen-, Linien-, Torten- und Punktediagrammen hinzugefügt.

Qt GRPC Modul

  • Das Qt GRPC Client Guide Übersichtsbeispiel wurde hinzugefügt.
  • Die gesamte Dokumentation und die Beispiele wurden verbessert und verfeinert.
  • Optimierte Streaming RPCs für das Schreiben unter hoher Last.

Qt GUI Modul

  • QBrush und QPen erhielten optimierte Operatoren für den Vergleich mit oder die Zuweisung von Farb- und Stilwerten.
  • QPainter::setBrush() hat neue optimierte Überladungen für das Setzen einer Farbe als einfarbigen Pinsel erhalten.
  • QPainterStateGuard ist eine neue RAII-Klasse, um ausgewogene Speicher-/Wiederherstellungsoperationen auf einer QPainter zu gewährleisten.
  • QColorSpace hat APIs zum Setzen und Abrufen der vier primären Farbraumpunkte.
  • Qt::ExpandedClientAreaHint wurde hinzugefügt, um anzufordern, dass der Client-Bereich des Fensters auf Bereiche erweitert wird, in denen er durch andere UI-Elemente verdeckt werden oder mit diesen in Konflikt geraten könnte, wie z. B. die Steuerelemente der Titelleiste des Fensters oder andere System-UIs.
  • Qt::NoTitleBarBackgroundHint hinzugefügt, um anzufordern, dass die Titelleiste des Fensters ohne Hintergrundfarbe gezeichnet wird.
  • QWindow::safeAreaMargins() wurde hinzugefügt, um den sicheren Bereich des Fensters zu reflektieren.
  • Parsing und automatische Erkennung von Emoji-Sequenzen in Text wurde hinzugefügt, um die Verwendung von farbigen Schriftarten gemäß der Unicode-Spezifikation zu gewährleisten, falls erforderlich. Dieser Parser kann pro Layout mit QTextOption::DisableEmojiParsing deaktiviert werden, oder durch Deaktivieren des Emoji-Segmenters bei der Konfiguration von Qt.
  • QFontDatabase::addApplicationEmojiFontFamily() und verwandte Funktionen hinzugefügt, um die von der Anwendung verwendete Standard-Emoji-Schriftart anzupassen.
  • QFontInfo::variableAxes() wurde hinzugefügt, um Informationen über die von einer Schriftart unterstützten variablen Achsen abzurufen.
  • QImage::flipped() und QImage::flip() bieten eine Qt::Orientation basierte API zum Spiegeln eines Bildes, wodurch der Code leichter zu lesen ist als die bool-basierte QImage::mirrored() Alternative.
  • QRhiGL_EXT_multisampled_render_to_texture wird bei der Ausführung mit OpenGL ES auf mobilen GPUs mit vorhandener Unterstützung wann immer möglich verwendet. Für Clients wie Qt Quick und Qt Quick 3D bringt dies potenziell signifikante Leistungsverbesserungen beim Multisampled Rendering auf gekachelten GPU-Architekturen.
  • QRhi: Unter Windows mit Direct 3D 11 und 12 werden QWindow Aktualisierungsanfragen nun von einem dedizierten vblank watcher-Thread gesteuert, wodurch die CPU-Belastung und die Latenzzeit reduziert werden. Dies bedeutet, dass Clients wie Qt Quick eine geringere Verzögerung beim interaktiven Ziehen von Objekten mit der Maus oder durch Berührung aufweisen sollten.
  • QRhi: Unterstützung für Variable Rate Shading wurde hinzugefügt, wo anwendbar (Direct 3D 12, Vulkan, Metal). Dies ermöglicht dynamische Foveation-Unterstützung mit Qt Quick 3D XR auf visionOS.
  • QRhi: Per-Render-Target-Blending wird nun optional auch für OpenGL unterstützt.
  • QRhi: Unterstützung für eine Reihe von Integer- und Tiefen-Texturformaten wurde hinzugefügt.
  • QRhi: Unterstützung für die Übergabe von von der Anwendung bereitgestellten Warte-/Signal-Semaphoren bei Vulkan hinzugefügt. Diese werden dann an vkQueueSubmit und Present weitergegeben, was die Integration von externen Rendering-/Compute-Engines ermöglicht, die auf mehrere Threads angewiesen sind und eine entsprechende Synchronisation mit dem Scenegraph-Renderer erfordern.
  • Verwenden Sie die Eigenschaft QPdfWriter::author(), um den Autor des generierten PDF-Dokuments zu setzen.

Qt HttpServer Modul

Qt Multimedia Modul

Qt Network Modul

Qt Network Auth-Modul

Qt Protobuf Modul

  • Die gesamte Dokumentation wurde verbessert und verfeinert.
  • Die Option HEADER_GUARD wurde hinzugefügt, um den Mechanismus für den Schutz von generierten Header-Dateien festzulegen.
  • Die Funktion protobuf-unsafe-registry wurde hinzugefügt, um Sicherheit gegen Leistung beim Zugriff auf benutzerdefinierte Protobuf-Serialisierer zu tauschen.

Qt QML-Modul

  • QML Language Server bietet jetzt eine Gliederungsansicht der Dokumentstruktur. Dies ermöglicht es Clients (z.B. IDEs oder Code-Editoren), die Struktur eines QML-Dokuments als interaktive Gliederung darzustellen, die Objekte, Eigenschaften, Methoden und andere Code-Elemente in einer hierarchischen Ansicht anzeigt.
  • qmlformat wurde um die Funktion der maximalen Zeilenlänge erweitert: qmlformat steuert nun, wo der Zeilenumbruch erfolgen soll, basierend auf einer maximal zulässigen Zeilenlänge, um ein konsistentes und lesbares QML-Dokument zu gewährleisten.

Qt Quick Modul

  • Die Eigenschaft SafeArea wurde hinzugefügt, um sichere Bereiche eines Elements oder Fensters zu verwalten.
  • Die Komponente Shear wurde hinzugefügt, um eine bequeme Methode zur Anwendung von Schertransformationen auf Elemente zu ermöglichen.
  • Die Eigenschaft FontMetrics::capitalHeight wurde hinzugefügt, die zuvor in der Qt Quick API fehlte.
  • Der Typ FontInfo wurde hinzugefügt, um die Ergebnisse der Schriftauflösung abzurufen, entsprechend der Klasse QFontInfo in C++.
  • Wiedereinführung der Unterstützung für den FramebufferObject-Rendering-Modus von QQuickPaintedItem, wenn die verwendete Grafik-API OpenGL ist. Dies dient als Portierungshilfe für Anwendungen der Qt-5-Ära, die für ihre QQuickPaintedItems die Verwendung der veralteten OpenGL-Paint-Engine von QPainter benötigen.
  • Die Pufferpooling-Logik des Scenegraph-Renderers wurde optimiert, um Spitzen bei der Speichernutzung in Szenen mit großen Geometrien zu vermeiden. Außerdem wurde der Overhead für Szenen mit vielen Elementen reduziert, insbesondere bei der Ausführung mit OpenGL.

Qt Quick Controls Modul

  • ContextMenu hinzugefügt. Dies kann an jedes Element angehängt werden, um ein Kontextmenü bei einem plattformspezifischen Ereignis anzuzeigen, wie z. B. einem Rechtsklick oder der Kontextmenütaste.
  • TextField und TextArea bieten nun standardmäßig ein ContextMenu. Wenn Sie bereits ein benutzerdefiniertes Kontextmenü für diese Typen haben, wird ContextMenu nicht sein eigenes öffnen (bei Rechtsklick oder Kontextmenütaste).

Qt Quick Effekte-Modul

  • Neues Element RectangularShadow für schnelles abgerundetes Rechteck in Form von Schatten/Glühen. Die API ist ähnlich wie bei CSS box-shadow, mit Farbe, Offset, Spread und Blur-Werten.

Qt Quick 3D-Modul

  • Implementierung von WeightedBlended Order Independent Transparency (OIT) zum Rendern transparenter Objekte hinzugefügt.
  • Unterstützung für 32-bit unsigned integer Texturformate wurde hinzugefügt.
  • Verbesserte Kontrolle über die Grenzen von Shadow Maps für instanzierte Modelle, was zu einer besseren Leistung führen kann, wenn die Berechnung teuer wird.
  • Unterstützung für 4K-Schattenkarten mit einer neuen 'Ultra'-Auflösungseinstellung wurde hinzugefügt.
  • Option zur Erzwingung mittlerer Präzision für Floats in GLSL ES-Fragment-Shadern hinzugefügt. Hauptsächlich als Werkzeug für das Leistungstuning bereitgestellt. Setzen Sie die Umgebungsvariable QT_QUICK3D_MEDIUM_PRECISION auf einen Wert ungleich Null. Hat keine Auswirkung auf andere Arten von Shadern (und das schließt auch Nicht-ES-GLSL ein).
  • DebugView unterstützt nun die Visualisierung von Grenzen für Punktlichtschatten.
  • Portierung der eingebauten Geometrien von Qt 3D nach QtQuick3D. Helfer. PlaneGeometry SphereGeometry , CylinderGeometry, ConeGeometry und TorusGeometry sind nun in QtQuick3D.Helpers verfügbar.
  • Eine Portierung von ExtrudedTextMesh von Qt 3D nach QtQuick3D.Helpers wurde hinzugefügt.
  • Unterstützung für die Verwendung von Instanzierung mit benutzerdefinierten Materialien im Materialeditor wurde hinzugefügt.

Qt Quick 3D XR-Modul

  • Unterstützung für haptische Ausgabe mit Controllern unter Verwendung von Amplitude, Dauer und Frequenz durch ein neues XrHapticFeedback Element wurde hinzugefügt.
  • Neue Eigenschaft in XrInputAction hinzugefügt, um eine Aktion bedingt zu deaktivieren, ohne sie in allen Handler-Funktionen testen zu müssen.
  • Metal-Backend für OpenXR hinzugefügt, um die Ausführung im Meta XR Simulator auf macOS zu unterstützen.
  • Die Eigenschaft multiViewRenderingEnabled ist nun schreibgeschützt und das Umschalten des Multiview-Renderings ist nicht mehr zur Laufzeit möglich. Wenn Multiview-Rendering unterstützt wird, ist es für die gesamte Lebensdauer der Anwendung aktiviert. In Portierungssituationen, in denen Multiview-Rendering nicht erwünscht ist, kann es deaktiviert werden, indem die Umgebungsvariable QT_QUICK3D_XR_DISABLE_MULTIVIEW auf einen Wert ungleich Null gesetzt wird.

Qt Quick VectorImage-Modul

  • Vorläufige Unterstützung für Farbanimationen und Transformationsanimationen hinzugefügt, die der aktuellen Unterstützung in Qt Svg entspricht.

Qt Sql Modul

  • QSqlDriver eine neue Funktion connectionName() hinzugefügt, die den Verbindungsnamen der zugehörigen QSqlDatabase Instanz zurückgibt.
  • QSqlQueryModel kann nun die Datenbank mit refresh() aktualisieren, wenn z.B. die Datenbank von außerhalb von Qt geändert wurde und neu eingelesen werden muss.

Qt SVG Modul

  • Drei neue Werte zu QtSvg::Options hinzugefügt, um Animationen zu deaktivieren.
  • Unterstützung von CSS-Animationen für Füll-, Strich- und Transform-Eigenschaften.

Qt VirtualKeyboard Modul

  • Ein neues japanisches Layout wurde hinzugefügt, das Flick-Tasten verwendet.
  • Unterstützung für die Einstellung der Lautstärke von Tastentönen wurde hinzugefügt.

Qt WebEngine Modul

  • Das interne Rendering wurde auf die Verwendung von ANGLE umgestellt, auch wenn Qt OpenGL RHI verwendet. Verbesserte Leistung und Fehlerähnlichkeit zu Chrome.
  • QWebEngineProfileBuilder und QML WebEngineProfilePrototype hinzugefügt, um Profile zu konfigurieren, bevor sie erstellt werden, und um Race Conditions zu vermeiden.
  • QWebEngineLoadingInfo Hinzufügen einer isDownload Eigenschaft, um anzuzeigen, dass die Last mit einem Download verbunden ist.
  • QWebEngineUrlRequestInfo Außerdem wurde eine isDownload()-Methode hinzugefügt, um anzuzeigen, dass die Anfrage mit einem Download verbunden ist.
  • QWebEngineSettings und QML WebEngineSettings drei neue Einstellungen hinzugefügt. PrintHeaderAndFooter und PreferCSSMarginsForPrinting, um den Druck zu konfigurieren. Und TouchEventsApiEnabled, um die TouchEvents API zu deaktivieren, die von einigen Websites als Auslöser für den mobilen Modus verwendet wird.

Qt Widgets Das Modul

  • QAbstractItemView hat eine neue Eigenschaft updateThreshold, mit der man angeben kann, wann eine vollständige Aktualisierung der Ansicht durchgeführt werden soll, anstatt zu versuchen, die Teile herauszufinden, an denen sich etwas in dataChanged() geändert hat. Dies ist besonders nützlich, wenn sich viele Elemente in einem großen Modell ändern, da die Berechnung des Update Rects länger dauern kann als ein vollständiges View-Update.
  • QComboBox kann seine Beschriftung mit Hilfe des Delegaten der Elementansicht zeichnen, indem die labelDrawingMode Eigenschaft auf UseDelegate gesetzt wird.
  • QHeaderView wurde optimiert, um die Speichernutzung für große Modelle drastisch zu reduzieren, solange die Abschnitte nicht in der Größe verändert, ausgeblendet oder neu geordnet werden.
  • Der als QWidget::accessibleIdentifier festgelegte Bezeichner kann von Hilfstechnologien und automatischen Testwerkzeugen verwendet werden, um ein bestimmtes Widget zu identifizieren.
  • Die Andockposition eines QDockWidget kann nicht explizit über die Eigenschaft QDockWidget::dockLocation festgelegt werden.
  • QStackedWidget gibt jetzt das Signal widgetAdded() aus, wenn ein neues Widget zum Stapel hinzugefügt wird.

Qt XML Modul

Werkzeuge

QDoc Dokumentations-Generator

  • QDoc akzeptiert nun Formatierungsbefehle in Makroargumenten.
  • Autoren können nun den zugrundeliegenden Rückgabetyp einer Funktion, die mit einem fn-Befehl dokumentiert ist, mit auto überschreiben.
  • QDoc kann nun Dokumentation aus Kommentaren in C++-Headern erzeugen. Dies wird als technische Vorschau in QDoc mit Qt 6.9 hinzugefügt, und wir würden uns über Feedback von unseren Benutzern freuen. Aktivieren Sie die QDoc-Konfigurationsvariable documentationinheaders, um es auszuprobieren.
  • QML-Aufzählungsdokumentation kann mit dem neuen Befehl qmlenumeratorsfrom aus C++-Aufzählungen generiert werden.
  • Die Befehle generatelist und annotatedlist unterstützen nun eine benutzerdefinierte Sortierreihenfolge für die generierten Listen.
  • deprecated akzeptiert zukünftige Versionen, und QDoc generiert entsprechenden Text, wenn es eine Version als in der Zukunft liegend erkennt.
  • Anforderungen für Clang-Bibliotheken: QDoc benötigt Clang-Bibliotheken von LLVM 17. Es ist auch bestätigt, dass es mit Clang-Bibliotheken von LLVM 18, 19 und 20 funktioniert.
  • QDoc unterstützt nun die Anpassung der CMake-Anforderungen für Drittanbieterprojekte mit den Befehlen cmakecomponent, cmakepackage und cmaketargetitem.
  • Beispielbezogene Warnungen sind nun über die neuen Konfigurationsvariablen examples.warnaboutmissingimages und examples.warnaboutmissingprojectfiles konfigurierbar.
  • QDoc kann nun Tooltips für Bilder in der Dokumentation erzeugen. Die Dokumentation für die neue Konfigurationsvariable usealttextastitle beschreibt, wie Sie dies für Ihr Projekt aktivieren können.

Plattform-Änderungen

Änderungen am Build-System

  • Die Erstellung von Qt und die Verwendung von Qt in CMake-Projekten erfordert nun CMake Version 3.22 oder höher.

Desktop-Plattformen

Windows

  • Unterstützung für die Darstellung zusätzlicher Emoji-Schriftformate, wie CBDT und COLRv1, wurde hinzugefügt.

Wayland-Client unter Linux

  • Unterstützung für das neue xdg-toplevel-icon-v1 Protokoll wurde hinzugefügt, damit QWindow::setIcon() funktioniert, wenn der Compositor dieses Protokoll ebenfalls unterstützt.
  • Die zugrundeliegende wl_surface eines Fensters teilt nun seine Lebensdauer und wird nicht mehr zerstört, wenn das Fenster ausgeblendet wird.

Mobile Plattformen

Android

  • Unterstützung unkomprimierter nativer Bibliotheken in APKs und Beseitigung der Notwendigkeit für packagingOptions.jniLibs.useLegacyPackaging true.
  • Einführung der CMake-Funktion qt_add_android_permission().
  • Hinzufügen der CMake-Eigenschaft QT_ANDROID_COMPILE_SDK_VERSION zum Festlegen des SDK-Levels für die Erstellung von Java-Code.
  • Hinzufügen der CMake-Eigenschaft QT_ANDROID_APP_ICON, um das Icon einer App zu setzen.
  • Hinzufügen der CMake-Eigenschaft QT_ANDROID_APP_NAME, um den Namen einer App zu setzen.
  • Entkopplung von Standort- und Bluetooth-Berechtigungen für API Level 31+.
  • Erlaubt die Einstellung eines Maximums für UI-Ereignisse in der Warteschlange im Hintergrund.
  • Hinzufügen eines Skripts zum einfachen Bereitstellen, Ausführen von Anwendungen und Abrufen von Protokollen vom Terminal.
  • Qt Quick für Android und QtQuickView:
    • Hinzufügen von setData() und dataChanged() Methoden zu QtAbstractItemModel.
    • OnDataChangedListerner Callback-Schnittstelle hinzugefügt.
    • QtQuickViewContent: Hinzufügen der onStatusChanged() Überladung, die das zugrunde liegende QtQuickViewContent Objekt übergibt.
    • Unterstützung mehrerer eingebetteter Ansichten von einem Android Service.

Eingebettete Plattformen

Boot to Qt

RealTime OSs

  • Unterstützung für RealTime OS wird nur für LTS-Versionen angeboten. Für Nicht-LTS-Versionen ist der Support ausschließlich über Professional Services verfügbar.

Liste der API-Änderungen

Diese Seiten enthalten einen Überblick über die API-Änderungen in Qt 6.9:

© 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.