Neuerungen in Qt 6.8
Neue und wiederhergestellte Module in Qt 6.8
Qt 6.8 enthält die folgenden neuen Module und Tools:
- Das Tool „svgtoqml“, mit dem QML-Code aus SVG-Dokumenten generiert wird, ist nun nicht mehr in der Tech-Preview-Phase. Das Tool unterstützt eine statische Teilmenge des „
SVG Tiny 1.2“-Profils. - Das Qt Graphs, Qt HTTP Server, Qt Protobufund Qt GRPC Module wurden alle aus dem Tech-Preview-Status herausgenommen.
- Es wurde ein Qt Quick Vector Image Modul zur Darstellung von SVG-Dokumenten als skalierbare Vektorgrafiken in einer „ Qt Quick “-Szene.
Entfernte Module in Qt 6.8
Das folgende Modul ist veraltet. Wir raten dringend davon ab, es in neuem Code zu verwenden.
Qt 3D Modul
Das Qt 3D Modul ist veraltet. „ Qt 3D “ bleibt Teil der lizenzierten Software und weiterhin Teil des Qt-Projekts. Das Modul wird auch in zukünftigen Versionen weiterhin in andere Module integriert sein. Kritische Fehler und Sicherheitslücken werden von den Modulbetreuern bei KDAB behoben. Bezüglich neuer Features und Funktionen sollten sich Nutzer per E-Mail an info@kdab.com an KDAB wenden.
Neue Funktionen in Qt 6.8
Qt Core Das Modul
- QChronoTimer ist ein Ersatz für „ QTimer “, der durchgehend „std::chrono“-Dauerwerte verwendet.
- QTimer::id() gibt ein ` Qt::TimerId` zurück, das anstelle von `int`-Timer-IDs in neuen Überladungen verschiedener Methoden, die eine solche ID erwarten, eingeführt und akzeptiert wurde.
- Erweiterte Unterstützung für std::chrono-Dauerwerte als Ersatz für ganzzahlige Nanosekunden-Parameter in ` QAbstractEventDispatcher`.
- QString, „ QByteArray “ und „ QList “ erhalten die Funktion „resizeForOverwrite()“.
- QString, „ QByteArray “ erhalten die Funktion „slice()“, die der Funktion „
*this = sliced()“ entspricht. - QString, QByteArray, QList und QVarLengthArray erhalten die Funktion `max_size()` zur Kompatibilität mit der Standard Template Library (STL).
- QList Unterstützt die Erstellung mit nicht initialisierten Einträgen bis zu einer bestimmten Größe, sofern der Inhaltstyp dies zulässt.
- QVarLengthArray::PreallocatedSize gibt den Parameter „Prealloc“ an.
- QLatin1StringMatcher::indexIn() kann nun einen ` QStringView` entgegennehmen.
- QCollatorSortKey unterstützt nun die Move-Konstruktion.
- QStringEncoder und „ QStringDecoder “ können nun den Kodierungsnamen als „ QString “ entgegennehmen.
- QThread erhält die Methoden ` isMainThread()` und ` isCurrentThread()`.
- QThreadPool::waitForDone() akzeptiert nun eine ` QDeadlineTimer ` anstelle von `int` Millisekunden.
- QDirListing Bietet eine Iteration im STL-Stil über Verzeichniseinträge.
- QVersionNumber kann nun aus einem ` QSpan` erstellt werden; es kann auch durchlaufen werden.
- qHash() akzeptiert nun „quint128“ und „qint128“.
- QMap::qHash() gibt den Hash-Wert eines Schlüssels zurück.
- QHash kann nun verschiedene Typen anhand seines Schlüssels hashen, sofern diese so markiert sind, dass sie bei gleichen Werten das gleiche Hash-Ergebnis liefern (nur C++20). Dies funktioniert für Paare aus „ QString “ / „QStringView “ und „ QByteArray “ / „QByteArrayView “. Auf allen Systemen außer ARM-Prozessoren ist der „ QLatin1StringView “ ebenfalls am Hashing von „ QString “ und „ QStringView “ beteiligt.
- QPointF, QLineF, QRectF und QMarginsF unterstützen nun Fuzzy-Vergleiche und Null-Prüfungen.
- Definieren Sie QT_ENABLE_STRICT_MODE_UP_TO, um verschiedene APIs zu deaktivieren; in der Dokumentation ist angegeben, ab welcher Version diese entfernt werden.
- Definieren Sie QT_NO_QASCONST, um qAsConst() zu deaktivieren.
- Definieren Sie QT_(NO_)USE_NODISCARD_FILE_OPEN, um „
[[nodiscard]]“ bei den Methoden „open()“ von E/A-Klassen zu steuern. - QLibraryInfo::paths() gibt alle relevanten Pfade zurück.
- QCryptographicHash und „ QMessageAuthenticationCode “ erhalten „ hashInto()“, um den Hash von Daten in einem bereitgestellten Puffer zu berechnen.
- Weitere „ QtCore “-Typen mit „
operator<()“ unterstützen nun auch „operator<=>()“, wenn sie mit C++20 kompiliert werden (und „compareThreeWay()“ sogar für C++17). Diese Typen unterstützen nun konsistent alle sechs Relationaloperatoren (als „hidden friends“) sowie die Umkehrung jedes von ihnen unterstützten Vergleichs mit gemischten Typen. In Qt 6.8 gilt dies für:- qfloat16
- QAnyStringView
- QByteArray
- QByteArrayView
- QCborArray
- QCborMap
- QCborValue
- QChar
- QDate
- QDateTime
- QDeadlineTimer
- QElapsedTimer
- QLatin1Char
- QLatin1StringView
- QModelIndex
- QOperatingSystemVersion
- QPersistentModelIndex
- QString
- QStringView
- QTime
- QTypeRevision
- QUrl
- QUtf8StringView
- QUuid
- QVersionNumber
- Der Namespace „ QtJniTypes “ mit Makros zur Deklaration von Java-Typen anhand ihrer JNI-Signatur wurde aus der Technology Preview herausgenommen und dokumentiert.
- Die variadischen Template-Versionen der APIs „ QJniObject “ und „ QJniEnvironment “ sind nicht mehr vorläufig und vollständig dokumentiert.
- Die neue Template-Klasse „ QJniArray “ erleichtert die Arbeit mit Java-Arrays aus C++-Code heraus.
Qt Graphs „Module“
- Qt Graphs wurde aus der Tech-Preview-Phase herausgeführt.
- Das Modul wurde in zwei Untermodule aufgeteilt: Qt Graphs Qt Graphs und Widgets, um die Notwendigkeit zu beseitigen, Widgets in reine QML-Anwendungen einzubinden.
- Einheitliches Design für 2D- und 3D-Diagramme. Siehe „ GraphsTheme “.
- Siehe Migrationsanleitungen für „ Qt Charts “ und für „Qt DataVisualization“.
Qt Graphs3D
- Unterstützung für Transparenz für „ Bars3D “ und „ Scatter3D “ hinzugefügt.
- Unterstützung für Scene3D.primarySubViewport und Scene3D.secondarySubViewport wurde hinzugefügt.
- Unterstützung für die Verschiebung der Position von Diagrammtiteln hinzugefügt. Siehe Abstract3DAxis.titleOffset.
- Unterstützung für Beschriftungsränder hinzugefügt. Siehe GraphsItem3D.labelMargin.
- Unterstützung für die Darstellung des Rasters mit einem Shader und die Änderung der Rasterlinienbreite hinzugefügt. Siehe GraphsItem3D.gridLineType und graphsline.mainWidth.
Qt Graphs2D
- Unterstützung für AreaSeries wurde hinzugefügt.
- Unterstützung für benutzerdefinierte Balken unter Verwendung von QML-Komponenten hinzugefügt. Siehe BarSeries.barDelegate.
- Unterstützung für gestapelte Balken („Stacked“) und prozentuale gestapelte Balken („StackedPercent“) hinzugefügt. Siehe BarSeries.barsType.
- Unterstützung für Beschriftungen in Balkendiagrammen hinzugefügt. Siehe BarSeries.labelsVisible.
- Unterstützung für Modell-Mapper für verschiedene Reihen hinzugefügt. Siehe XYModelMapper, BarModelMapper und PieModelMapper.
- Unterstützung für „ LegendData “ für alle Reihen hinzugefügt.
- Unterstützung für dynamische Spline-Reihen hinzugefügt.
- Unterstützung für Achsenbeschriftungen hinzugefügt. Siehe AbstractAxis.titleText.
Qt GRPC Das Modul
- Qt GRPC wurde aus der Tech-Preview-Phase entlassen.
- Streaming-Unterstützung für das Modul „GrpcQuick“ hinzugefügt.
- QGrpcInterceptor, QGrpcInterceptorManager und QGrpcInterceptorContinuation wurden entfernt.
- Die Methode „
writesDone()“ wurde zu „ QGrpcClientStream “ und „QGrpcBidirStream“ hinzugefügt, um einen Stream von der Client-Seite aus halb zu schließen.
Qt GUI Das Modul
- QStyleHints::colorScheme verfügt nun über eine Setter-Funktion, mit der Anwendungen versuchen können, die Systemeinstellung durch ein explizites „Dark“- oder „Light“-Schema zu überschreiben.
- QFont::ContextFontMerging wurde hinzugefügt; damit lässt sich ein neuer Algorithmus zur Schriftartenzusammenführung aktivieren, der bei der Auswahl von Fallback-Schriftarten den gesamten String berücksichtigt. Dies kann zwar mit etwas mehr Rechenaufwand verbunden sein, führt aber in bestimmten Fällen zu besseren Ergebnissen.
- Die Stilstrategie „ QFont::PreferTypoLineMetrics “ wurde hinzugefügt, die so eingestellt werden kann, dass stets die typografischen Zeilenmetriken in OpenType-Schriftarten bevorzugt werden, selbst wenn die Schriftart das USE_TYPO_METRICS-Flag nicht manuell setzt.
- Unterstützung für benutzerdefinierte „ QDesktopServices “- und „https“-URL -Schemas für macOS hinzugefügt, ähnlich wie bei iOS.
- QImage::Format_CMYK8888 Das 32-Bit-CMYK-Bildformat wurde hinzugefügt.
- QColorSpace Die Unterstützung für die Verarbeitung von ICC-A2B-Farbräumen wurde hinzugefügt, ebenso wie die explizite Unterstützung für Graustufen- und CMYK-Farbräume.
- Unterstützung für die HDR-Farbräume „ QColorSpace::Bt2020 “, „ QColorSpace::Bt2100Pq “ und „ QColorSpace::Bt2100Hlg “ wurde hinzugefügt.
- QColorSpace::transformModel() gibt das zugrunde liegende Verarbeitungsmodell zurück.
- QColorSpace::colorModel() gibt zurück, für welches Farbmodell der Farbraum ausgelegt ist.
- QImage::colorTransformed() und die Varianten von QImage::applyColorTransform() mit drei Argumenten wurden hinzugefügt, um die gleichzeitige Konvertierung von Bildformat und Farbraum zu unterstützen.
- QStyleHints::contextMenuTrigger ist eine beschreibbare Eigenschaft, mit der Anwendungen steuern können, ob Kontextmenüs durch Drücken oder Loslassen einer Schaltfläche geöffnet werden sollen.
- Qt-Barrierefreiheitsschnittstellen können nun die Meldung von „ attributes “ als Schlüssel-Wert-Paare an Clients unterstützen.
- QAccessibleAnnouncementEvent kann von Anwendungen ausgelöst werden, um die Ansage einer Meldung durch assistive Technologien anzufordern.
- QPageLayout::setMargins kann nun einen optionalen Parameter „ OutOfBoundsPolicy “ annehmen, um anzugeben, ob Ränder, die außerhalb der Grenzen liegen, verworfen oder begrenzt werden sollen.
- QPdfWriter Es wurde CMYK-Unterstützung für Stifte/Füllungen hinzugefügt.
- QFontDatabase addApplicationFallbackFontFamily wurde hinzugefügt, um die Standard-Fallback-Schriftfamilien für bestimmte Schriftsysteme zu überschreiben.
- Die Unterstützung für Multiview-Rendering in „ QRhi “ wurde vervollständigt. Multiview wird nun auch bei Vulkan-1.1-Implementierungen unterstützt, anstatt dass Vulkan 1.2 erforderlich ist. Dies ist insbesondere für Android-basierte Geräte wie das Meta Quest 3 relevant.
- Es wurde Unterstützung in „ QRhi “ eingeführt, um das Multisample-Depth-Rendering (Depth/Stencil) automatisch in eine Nicht-Multisample-Depth-Textur (Depth/Stencil) aufzulösen – auf Plattformen und APIs, auf denen dies unterstützt wird. Weitere Details finden Sie unter QRhiTextureRenderTargetDescription::setDepthResolveTexture() und QRhi::ResolveDepthStencil.
Qt Multimedia Modul
- Die Klassen „ QVideoFrameInput “ und „ QAudioBufferInput “ wurden hinzugefügt, die benutzerdefinierte Mediendaten über „ QMediaCaptureSession “ an „ QMediaRecorder “ senden können.
- Die Klasse „ QAudioBufferOutput “ wurde hinzugefügt, die dekodierte Audiodaten von „ QMediaPlayer “ empfangen kann.
- Die Klasse „ QAbstractVideoBuffer “ wurde hinzugefügt, die die Erstellung von „ QVideoFrame “-Instanzen mit benutzerdefinierten Videodaten ermöglicht.
- QMediaRecorder kann die Medienausgabe in ` QIODevice` schreiben.
- Es wurde die Unterstützung von „ QScreenCapture “ unter Linux mit dem Wayland-Compositor hinzugefügt, der den ScreenCast-Dienst über das XDG Desktop Portal unterstützt.
- Die FFmpeg-Bibliothek ist dynamisch mit dem FFmpeg-Plugin verknüpft, und die verwendeten gemeinsam genutzten FFmpeg-Module werden mit „ Qt Multimedia “ ausgeliefert.
- Unterstützung für das FFmpeg-Medien-Backend unter iOS hinzugefügt.
- Die erforderliche Mindestversion von GStreamer wurde auf 1.20 angehoben.
Qt Network Das Modul
- QNetworkAccessManager unterstützt nun das Senden von HTTP-Anfragen über einen lokalen Socket unter Verwendung des Schemas „unix+http:“ oder „local+http: “.
- QDnsLookup unterstützt nun DNS über TLS und kann anzeigen, ob der DNS-Server eine Überprüfung der Datenauthentizität durchgeführt hat.
- QDnsLookup Unterstützt nun TLS-Association-Einträge.
- QNetworkCacheMetaData, „ QNetworkProxy “, „ QNetworkRequest “ und „ QNetworkReply “ können nun Header abrufen und setzen.
- QNetworkRequestFactory Ermöglicht das Festlegen von „ priority “ sowie „ attributes “ für zukünftige Anfragen.
- Es wurden die Klassen „ QFormDataPartBuilder “ und „ QFormDataBuilder “ hinzugefügt, um die Erstellung von QHttpMultipart-Nachrichten zu vereinfachen.
Qt Network Auth-Modul
- Die Klasse „ QOAuthUriSchemeReplyHandler “ wurde hinzugefügt, die Umleitungen mit privaten/benutzerdefinierten und HTTPS-URI-Schemas verarbeitet (unterstützte Plattformen: iOS, Android und macOS).
- Die Klasse „ QOAuth2AuthorizationCodeFlow “ wurde um Unterstützung für „Proof of Key Code Exchange“ (PKCE) erweitert. PKCE ist eine empfohlene Sicherheitsmaßnahme zur Abwehr von Angriffen durch das Abfangen von Autorisierungscodes.
- Aufgrund von Rückmeldungen mehrerer Nutzer haben wir viele Probleme behoben, um qnetworkauth insgesamt zu verbessern. Dazu gehören mehrere Fehlerbehebungen, Verbesserungen, veraltete Funktionen, Ergänzungen in der Dokumentation sowie eine Übersichtsdokumentation, die den Einstieg erleichtern soll.
Qt Positioning Modul
- Das Android-Backend von „ Qt Positioning “ kann nun unter Android 14 und höher die Höhe im MSL-Format bereitstellen.
Qt Protobuf Modul
- Das Qt Protobuf Modul wurde aus der Tech-Preview-Phase entlassen.
Qt Qml Modul
- QML Language Server wurde um neue Funktionen erweitert: semantische Hervorhebung, erweiterte Unterstützung für die JavaScript-Sprache, Snippet-Unterstützung für „Quick Types“, Dokumentationshinweise, Umbenennung von QML-Dateien sowie Unterstützung für die Konfiguration von „
.qmllint.ini“-Warnungen pragma ValueTypeBehavior: Assertablewurde hinzugefügt. Dies ermöglicht eine korrekte Typprüfung mit „as“-Umwandlungen bei Werttypen. Ohne dieses Pragma wird bei Verwendung von „as“ mit einem Werttyp eine Instanz dieses Typs erstellt, anstatt lediglich den Typ zu prüfen. Das neue Attribut stellt sicher, dass „as“-Umwandlungen bei Typüberprüfungen korrekt funktionieren.- Verbesserte Behandlung von Werttypen. „qmllint“ gibt nun eine Warnung aus, wenn bekannte Werttypen (wie z. B. „
point“, „rect“, „size“) aus Zeichenketten konstruiert werden, und empfiehlt die Verwendung korrekter Konstruktoren. Werttypen können nun Standardkonstruktoren haben und sind besser in das Typsystem integriert. - Es wurde eine inkrementelle Garbage Collection eingeführt, um die Reaktionsfähigkeit der Anwendung zu verbessern. Der Garbage Collector führt seine Arbeit nun schrittweise über mehrere Frames hinweg durch, anstatt die Ausführung für längere Zeit zu blockieren. Dies reduziert die Pausenzeiten erheblich und sorgt für eine flüssigere Leistung, insbesondere bei komplexen Anwendungen. Die inkrementelle Garbage Collection umfasst:
- Inkrementelle Markierungsphase zur Vermeidung langer Pausen
- Inkrementelle Sweep-Phase zur Speicherfreigabe
- Konfigurierbare Zeitlimits über Umgebungsvariablen
- QJSEngine::collectGarbageDas Verhalten von () wurde nun aus Gründen der Konsistenz an die QML-Methode `
gc()` angepasst. - Konstruierbare Werttypen können nun direkt in QML mithilfe der Konstruktorsyntax erstellt werden, was eine übersichtlichere Initialisierung von Werttypen wie „
color“, „rect“ und benutzerdefinierten Typen ermöglicht. - Es wurden zwei neue CMake-Richtlinien hinzugefügt, die das Verhalten von `qt_add_qml_module() ` beeinflussen: QTP0004 vereinfacht die Verwendung von QML-Modulen bei verschachtelten Ordnerstrukturen. QTP0005 ermöglicht die Verwendung von Zielen bei der Angabe von Importen und Abhängigkeiten.
Qt Quick Compiler
- Der QML-Skript-Compiler zeichnet nun Statistiken zur Kompilierung von QML nach C++ auf. Diese Informationen können durch Ausführen des Ziels „all_aotstats“ für das Projekt angezeigt werden.
Qt Quick Modul
- Es wurde `font.contextFontMerging` hinzugefügt, mit dem ein neuer Algorithmus zur Schriftartenzusammenführung aktiviert werden kann, der bei der Auswahl von Fallback-Schriftarten den gesamten Text berücksichtigt. Dies kann zwar mit etwas mehr Rechenaufwand verbunden sein, führt aber in bestimmten Fällen zu besseren Ergebnissen.
- Die Eigenschaft „font.preferTypoLineMetrics“ wurde hinzugefügt, mit der festgelegt werden kann, dass die typografischen Zeilenmetriken in OpenType-Schriftarten immer bevorzugt werden, selbst wenn in der Schriftart das Flag „USE_TYPO_METRICS“ nicht manuell gesetzt ist.
- Die Eigenschaft „ retainWhileLoading “ wurde zu „ Image “ und „ BorderImage “ hinzugefügt. Wenn sie bei asynchron geladenen Bildern auf „
true“ gesetzt ist, werden die aktuellen Bilddaten beibehalten, bis das neue Bild vollständig geladen ist. Dadurch kann ein Flackern vermieden werden. - PlanarTransform wurde hinzugefügt, ein Hilfsobjekt, das einfache Funktionen zur Angabe von 2D-Transformationsmatrizen bereitstellt.
- PathRectangle wurde hinzugefügt, ein optional abgerundeter Rechteckpfad für Shape und PathView.
- Die Eigenschaft „ Drag.imageSourceSize “ wurde hinzugefügt, um die Größe des Bildes zu steuern, das die verschobenen Daten darstellt.
- „ QQuickRenderTarget::depthTexture “ wurde als Möglichkeit hinzugefügt, eine benutzerdefinierte Tiefentextur festzulegen.
- Der Enumerator „ QQuickRenderTarget::Flag “ wurde hinzugefügt, um die Angabe eines Ansichtsformats beim Erstellen über die benannten Konstruktoren zu ermöglichen.
- TableView Unterstützt nun das programmatische und interaktive Verschieben von „ columns “ und „ rows “.
- Alle Standardelemente und -materialien von „ Qt Quick “ sind nun mit dem Multiview-Rendering kompatibel. Dies wird für die Anwendungen transparent genutzt, wenn 2D-Inhalte in eine „ Qt Quick 3D “-XR-Szene eingebettet werden und das Multiview-Rendering aktiviert ist. Das Multiview-Rendering kann die Rendering-Leistung verbessern und den Stromverbrauch von AR/VR-Geräten senken.
- Das Erstellen von Multiview-kompatiblen benutzerdefinierten Materialien (QSGMaterial, QSGMaterialShader) wird über QSGMaterial::viewCount() ermöglicht.
- Es wurde Unterstützung hinzugefügt, um das Rendering von Qt Quick mit Multiview-Rendering in ein 2D-Textur-Array in QQuickRenderTarget umzuleiten. Dies wird über neue Überladungen von Funktionen wie QQuickRenderTarget::fromVulkanImage() realisiert und bildet die Grundlage für die Unterstützung des Multiview-Renderings für XR-Anwendungen, die mit Qt Quick 3D.
- Es wurde Unterstützung für die automatische Durchführung von „ multisample resolve “ am Ende eines Render-Durchgangs in „ QQuickRenderTarget “ hinzugefügt. Bisher war das Multisample-Rendering von umgeleiteten „ Qt Quick “-Szenen nur möglich, indem Multisample-Texturen als Ziel festgelegt wurden, wobei die Auflösung der Anwendung oder deren Shadern überlassen blieb. Wenn diese Funktion aktiviert ist, erstellt „ Qt Quick “ nun automatisch zwischengeschaltete Multisample-Texturen zur Verwendung als Farbpuffer und führt die Auflösung automatisch in die von der Anwendung bereitgestellte Nicht-Multisample-Textur durch. Dadurch können „ Qt Quick “-Rendering-Zieltexturen erstellt werden, die von einer externen Engine, einem Framework oder einer API (z. B. OpenXR) bereitgestellt werden, die ausschließlich Nicht-Multisample-Texturen bereitstellt und verwendet.
- Unterstützung für „ setting a depth texture “ in „ QQuickRenderTarget “ hinzugefügt. Dies ermöglicht die Angabe einer anwendungsspezifischen Textur (oder eines Textur-Arrays bei Multiview-Rendering), in die Tiefendaten geschrieben werden, anstatt die Qt-eigenen Zwischenpuffer zu verwenden. Dies ist insbesondere dann nützlich, wenn Tiefendaten in eine Tiefentextur geschrieben werden müssen, die von einer externen Engine, einem Framework oder einer API (z. B. OpenXR) bereitgestellt wird.
- Es wurde Unterstützung für die Angabe eines Textur-View-Formats in QQuickRenderTarget hinzugefügt. Dies wird über das Argument „
viewFormat“ in den neuen Überladungen für QQuickRenderTarget::fromVulkanImage() und ähnliche Funktionen festgelegt. Diese Funktion wurde speziell bereitgestellt, um das Entfernen oder Hinzufügen des sRGB-Qualifizierers aus dem bzw. zum Texturformat zu ermöglichen, und ist nützlich, wenn mit Texturen gearbeitet werden muss, die von einer externen Engine, einem Framework oder einem XR-Compositor bereitgestellt werden, bei denen keine Kontrolle über das Texturformat besteht, die implizite Linear-zu-sRGB-Konvertierung der 3D-APIs bei Shader-Schreibvorgängen jedoch nicht akzeptabel ist (z. B. weil die Materialpipeline von „ Qt Quick 3D “ bereits denselben Vorgang durchführt). - QQuickRenderTargetDie interne Verwaltung von Zwischenpuffern für Tiefen-/Stencil- und Multisample-Farbdaten wurde überarbeitet. Der Aufruf von ` QQuickWindow::setRenderTarget()` macht nicht mehr alle internen temporären Puffer ungültig, sondern versucht, diese wiederzuverwenden, solange Größe, Format und andere Parameter übereinstimmen. Dies dürfte zu Leistungsverbesserungen in Anwendungen und Bibliotheken führen, die bei jedem Frame eine andere native Textur an die „ QQuickWindow “ übergeben müssen (z. B. weil die Textur aus einem Pufferpool stammt, der von einer externen Engine, einem Framework oder einem XR-Compositor verwaltet wird).
Qt Quick Controls Modul
- Der „FluentWinUI3“-Stil wurde hinzugefügt – ein moderner, nativ anmutender Stil, der für Plattformen mit Windows 11 und höher konzipiert ist.
- Es wurde eine neue Eigenschaft „ popupType “ zu „ Popup “ und abgeleiteten Typen hinzugefügt. Damit lässt sich steuern, ob das Popup in der Szene angezeigt werden soll oder in einem eigenen Popup-Fenster auf oberster Ebene erscheint.
- Der macOS-Stil ist nun in der Lage, native ` menus ` und ` menubars` zu erstellen.
- Die Typen aus dem (internen) Modul „QtQuick.Controls.impl“, wie beispielsweise „PaddedRectangle“, „MnemonicLabel“ oder ähnliche, werden nicht mehr versehentlich in Dokumenten verfügbar gemacht, die „QtQuick.Controls“ oder einen beliebigen Controls-Stil importieren. Diese Typen gehören zur privaten API und sollten niemals ohne expliziten Import von QtQuick.Controls.impl erreichbar sein.
Qt Quick Modul „Shapes“
- Die Eigenschaft „ShapePath.fillItem“ wurde hinzugefügt. Damit können beliebige Elemente eines Textur-Providers (wie z. B. geschichtete Elemente und Bilder) als Füllung für die Form verwendet werden.
- Die Eigenschaft „ShapePath.fillTransform“ wurde hinzugefügt, mit der eine beliebige Transformation für die Füllung der Form festgelegt werden kann, unabhängig davon, ob es sich um ein Element oder einen Farbverlauf handelt.
Qt Quick 3D Modul
- Technologievorschau zur XR-Unterstützung für Qt Quick 3D
- Unterstützung für Head-Mounted-Displays (HMD) unter Verwendung von OpenXR, wie beispielsweise Meta Quest 2 und 3.
- Unterstützung für Apple Vision Pro.
- Multi-View-Rendering (Rendering beider Augen in einem einzigen Durchgang).
- Unterstützung räumlicher Eingaben über Hand-Tracking oder Controller.
- Unterstützung für räumliche Anker.
- Verbessertes Schatten-Rendering
- Allgemeine Qualitätsverbesserungen.
- Verbesserte Debugging-Tools für Schatten.
- Kaskadierende Schattenkarten.
- Weiche Schatten mit „Percentage-Closer-Filtering“ (PCF).
- PrincipledMaterial Verbesserungen
- Zusätzliche Parameter zur Anpassung von Fresnel.
- Unterstützung für die Eigenschaftsmaskierung basierend auf dem Vertex-Farbattribut.
- CustomMaterial: Bereitstellung der verbleibenden Eigenschaften aus „ PrincipledMaterial “.
Qt Quick VectorImage-Modul
- Einführung des Moduls „ VectorImage “: Eine Komponente, mit der Vektorgrafiken direkt Qt Quick mit Hardwarebeschleunigung und ohne Vorrasterisierung gerendert werden können. Derzeit wird das SVG-Format (eine statische Teilmenge des „
SVG Tiny 1.2“-Profils) unterstützt.
Shader Tools Qt XML-ph-0000@deepl.internal-Modul
- Die Unterstützung für Shader, die mit Multiview-Rendering kompatibel sind, wurde vervollständigt. Das Schlüsselwort „
MULTIVIEW“ wurde zur CMake-Funktion „qt_add_shaders() “ hinzugefügt. - Es wurde Depfile-Unterstützung für Shader hinzugefügt, die zur Erstellungszeit über `qt_add_shaders()` verarbeitet werden. Wird eine Datei geändert, die über die Anweisung `
#include` in einem Shader eingebunden ist, löst dies nun beim nächsten Erstellen des Projekts eine Neukompilierung dieser Shader-Datei aus.
Qt SQL-Modul
- QSqlDatabase, „ QSqlQuery “ und „ QSqlDriver “ wurden um „ numericalPrecisionPolicy “ erweitert.
- QSqlDatabase erhielt eine neue Funktion `moveToThread()`, um die Thread-Affinität der Datenbankverbindung zu ändern.
- Die PostgreSQL- und MySQL/MariaDB-Treiber verarbeiten nun Datums- und Zeitangaben korrekt, wenn sich der Server in einer anderen Zeitzone befindet als der Client.
- Die gesamte Protokollierung erfolgt nun über kategorisierte Logger ( Qt SQL), um die Fehlersuche zu verbessern.
- QSqlField::defaultValue, value, readOnly, requiredStatus, length, precision, generated, autoValue und tableName sind nun Eigenschaften.
- QSqlIndex::name und cursorName, QSqlQuery::forwardOnly sowie positionalBindingEnabled sind nun Eigenschaften.
Qt Test Modul
- Es wurden die C++-Makros und Umgebungsvariablen „ QTEST_THROW_ON_FAIL “ und „ QTEST_THROW_ON_SKIP “ hinzugefügt, die, wenn sie definiert sind, die Art und Weise ändern, wie „ QCOMPARE “ ()/ „QVERIFY “ ()/ „QSKIP “ () usw. die Testfunktion bei einem Fehler beenden. Anstatt mit einem `return` nur die unmittelbar umgebende Funktion zu verlassen, lösen sie stattdessen eine spezielle Ausnahme aus, wodurch auch Unterfunktionen der Testfunktion bis hinunter zu QtTestLib beendet werden.
- Die Makros QTRY_*_WITH_TIMEOUT akzeptieren nun auch Chrono-Literale (bisher:
intMillisekunden). - QTest::failOnWarning() verfügt nun über eine Überladung ohne Parameter, um den häufigen Fall „Fehler bei jeder Warnung“ zu unterstützen, ohne dass ein regulärer Ausdruck erstellt werden muss, der alles abdeckt.
- QSignalSpy erbt nicht mehr von ` QObject`. Wenn Ihr Code die Tatsache nutzt, dass ` QSignalSpy ` ein ` QObject` ist, müssen Sie dies nun entsprechend anpassen.
- Die Methode ` QSignalSpy::signal()` gibt bei einem Verbindungsfehler nicht mehr zwangsläufig ein leeres Byte-Array zurück. Verwenden Sie die vorhandene Methode ` isValid()`, um festzustellen, ob ein bestimmtes ` QSignalSpy `-Objekt auf ein gültiges Signal eines gültigen Objekts wartet.
- Die Makros `QCOMPARE_xx` können nun nur noch Auswertungen von ` QTest::toString()` finden, die entweder über die argumentabhängige Suche für den betreffenden Typ gefunden werden oder eine Instanziierung der Vorlage ` QTest::toString<T>( )` sind. Dies entspricht dem Verhalten des Makros ` QCOMPARE()`.
Qt WebEngine Modul
- QWebEngineFrame für framespezifische APIs hinzugefügt, z. B. zum Ausführen von JavaScript in bestimmten Frames oder zum Drucken bestimmter Frames.
- QWebEngineClientHints hinzugefügt, um die Identifizierung des Browsers gegenüber Webseiten mithilfe der Client-Hints-DOM-API besser zu steuern.
- QWebEnginePermission Hinzugefügt zur Verwaltung neuer und bestehender Website-Berechtigungen. Die bestehende Berechtigungs-API in ` QWebEnginePage ` wurde als veraltet markiert und durch `QWebEngineProfile::getPermission()` sowie `QWebEngineProfile::listPermissions()` ersetzt.
- QWebEngineProfile::setPersistentPermissionsPolicy() wurde hinzugefügt, um zu steuern, wie Website-Berechtigungen über Browsersitzungen hinweg beibehalten werden. Standardmäßig werden eingehende Berechtigungen auf der Festplatte gespeichert.
- Die Berechtigungstypen „ QWebEnginePermission::ClipboardReadWrite “ und „ QWebEnginePermission::LocalFontsAccess “ wurden hinzugefügt.
- QWebEngineCertificateError::isMainFrame() gibt an, dass der Zertifikatsfehler aus einem Haupt- oder Unterframe stammt.
- QWebEngineNavigationRequest::hasFormData() wurde hinzugefügt, um eine Navigationsanfrage anzuzeigen, bei der Formular-Daten gesendet werden.
- QWebEngineSettings::imageAnimationPolicy() wurde hinzugefügt, um die Richtlinien für Bildanimationen zu steuern.
Tools
QDoc-Dokumentationsgenerator
- Sie können nun den Befehl „
\keyword“ verwenden, um auf einen Abschnitts-Titel zu verlinken und so die kontextsensitive Hilfe zu verbessern. - QDoc verlinkt nicht mehr fälschlicherweise auf nicht vorhandene Dokumentation für undokumentierte Funktionen zum Zugriff auf Eigenschaften.
- Das Build-System definiert „
QDOC2_COMPAT“ nicht mehr. - Bei der Erzeugung der DocBook-Ausgabe führt QDoc keine mehrfache Escape-Verarbeitung von Zeichen mehr durch.
- Der Befehl „
\instantiates“ ist veraltet. Verwenden Sie stattdessen den neuen Befehl „\nativetype“. Der alte Befehl leitet nun auf den neuen weiter, und QDoc generiert einen Hinweis auf seine Veralterung. - Sie können „
auto“ als Rückgabetyp für Funktionen angeben, um den vollständigen Typ in der generierten Dokumentation zu verbergen. - Verbesserte Formatierung der Tabelle „Voraussetzungen“ in der API-Dokumentation.
- QDoc erzeugt in seiner Ausgabe an stdout weniger doppelte Berichte.
- .qhp-Dateien enthalten nun (korrekt) Einträge für Gruppenelemente, die mit dem Befehl „
\ingroup“ erstellt wurden, wenn keine zugehörige Dokumentation unter „\group“ vorhanden ist. - QDoc generiert nun Titel für Namespaces in .qhp-Dateien, nicht nur für Klassen und Typen.
- QDoc wertet die Befehlszeilenoptionen von „
-DDEFINE=VALUE“ nun korrekt aus. - QDoc generiert neue Warnungen, wenn:
- das Attribut „indexTitle“ des qhp-Teilprojekts nicht gefunden wird.
- Wenn der Befehl „
\nativetype“ mehrfach für dieselbe C++-Klasse verwendet wird. - Wenn eine Datei pro Projekt mehrfach generiert wird.
- Funktionen, die zuvor als Überladung ausgewählt wurden, aber nicht explizit mit dem Befehl „
\overload“ markiert sind und aufgrund von Sortieränderungen als primäre Signatur ausgewählt werden. Diese müssen entweder vollständig dokumentiert oder mit dem Befehl „\overload“ gekennzeichnet werden.
- QDoc gibt keine Warnungen mehr zu undokumentierten Parametern in überladenen Konstruktoren aus, und einige unnötige Link-Warnungen wurden entfernt.
- Link-Warnungen melden nun aussagekräftige Stellen.
- QDoc erfordert nun Clang 17 oder neuer.
- Das QDoc-Handbuch wurde mehrfach aktualisiert.
- Sie können Markenzeichen mit dem neuen Befehl „
\tm“ kennzeichnen. Wenn Sie die Konfigurationsvariable „navigation.trademarkspage“ definieren, wird das Markenzeichen-Symbol (tm) zu einem Link auf diese Seite. - Der Befehl „
\deprecated command“ akzeptiert nun auch zukünftige Versionen. - QDoc-Makroargumente akzeptieren nun Formatierungsbefehle.
- Der Befehl „
\compareswith“ erlaubt nun Argumente in geschweiften Klammern. - Die Befehlszeilenoption „
-outputdir“ bezieht sich nun auf das aktuelle Arbeitsverzeichnis. Außerdem verändert die Konfigurationsvariable „nosubdirs“ nicht mehr den Inhalt von „outputdir“. - Die ungenutzte und undokumentierte Konfigurationsvariable „
clangdefines“ wurde entfernt. - QDoc generiert keine „
.qhp.sha1“-Dateien mehr. - QDoc generiert nun eindeutige Verweise auf Einträge im Inhaltsverzeichnis.
- Bei der Erzeugung der HTML-Ausgabe versieht QDoc nun nur noch Links zu API-Entitäten mit „
translate="no"“. - Namenskonflikte bei der Erstellung von Dokumentationen für mehrere Projekte wurden reduziert. Dies kann sich in bestimmten Konfigurationen auf die Namen der generierten Dateien auswirken.
- CMake-Ziele können nun mit dem neuen Befehl „
\qtcmaketargetitem“ angegeben werden. - Die Unterstützung für Funktionsargumente mit Index wurde entfernt. Diese Funktion war undokumentiert, ungenutzt und fehlerbehaftet. Durch ihre Entfernung entfällt die Erstellung und der Versuch, reguläre Ausdrücke für jede einzelne dokumentierte Funktionssignatur und jedes Argument des Befehls „
\a“ abzugleichen. - Links zu Funktionssignaturen erscheinen nun einheitlicher.
- QDoc unterstützt nun automatisch generierte Werte in der QML-Dokumentation aus C++-Enums.
- Die Konfigurationsvariablen „
outputprefixes“ und „outputsuffixes“ gelten nun sowohl für die Dokumentation von C++-Typen als auch für die Dokumentation von QML-Typen und -Modulen. Dies kann bei Dokumentationskonfigurationen mit mehreren Modulen nützlich sein, bei denen zwei oder mehr Module dieselben Typnamen definieren.
Änderungen an den Plattformen
Desktop-Plattformen
Arm-basierte Desktops
- Sie können nun Qt und Qt-Anwendungen auf Windows-Desktops mit Arm-Prozessoren erstellen und entwickeln.
- Sie können nun Qt und Qt-Anwendungen auf Linux-Desktops mit Arm-Prozessoren erstellen und entwickeln.
Windows
- Das Schriftartensystem wurde so geändert, dass DirectWrite als Standard-Backend verwendet wird. Dadurch werden einige moderne Funktionen ermöglicht, die mit dem veralteten GDI-Backend nicht verfügbar waren. Das bisherige Backend ist weiterhin verfügbar und kann aktiviert werden, indem „
fontengine=gdi“ als Parameter an das QPA-Plugin übergeben wird.
macOS
- Unterstützung für macOS 15 hinzugefügt
- Unterstützung für Sicherheitsbereiche hinzugefügt, sowohl für die Kameraaussparung in Vollbildanwendungen als auch für Fenster, bei denen der Inhalt bis in die Titelleiste hineinreicht.
- Flicker beim Ändern der Größe von „ Qt Quick “-Fenstern wurde behoben, indem die Metal-Ebene mit einer Transaktion dargestellt wird.
- Ausführung von Animationen beim Ändern der Größe von „ Qt Quick “-Fenstern wurde ermöglicht.
- Neue NSCursor-API für Cursor bei der Größenänderung von Fensterrahmen übernommen
- Das NSServicesMenuRequestor-Protokoll für das Dienstemenü und die Unterstützung von Schreibwerkzeugen wurde implementiert.
Wayland-Client unter Linux
- Es wurde ein neuer Fensterdekorationsstil hinzugefügt, der unter GNOME verwendet wird und ein ähnliches Design wie GNOME aufweist.
- Der modale Status von Dialogen wird nun über das neue xdg-dialog-v1-Protokoll an den Compositor weitergeleitet.
- Das Anzeigen eines Fensters fordert nun auch die Aktivierung durch den Compositor an (außer wenn „ Qt::WA_ShowWithoutActivating “ gesetzt ist).
- Es wurde Unterstützung für „qtwaylandscanner“ hinzugefügt, um bei „null QString “ den Wert „null“ zu senden.
- Die Optionen „
PUBLIC_CODE“ und „PRIVATE_CODE“ wurden zu „qt_generate_wayland_protocol_client_sources()“ hinzugefügt, um die an „wayland-scanner“ übergebenen Optionen zu steuern. - Die Bildschirmaufnahmefunktion wurde mithilfe des ScreenCast-Dienstes über das XDG-Desktop-Portal in Qt Multimedia implementiert.
Mobile Plattformen
Android
- Die minimal unterstützte Version wurde auf Android 9 angehoben.
- Unterstützung für die „build.gradle“-Eigenschaft „namespace“ hinzugefügt.
- Es wurde die CMake-Eigenschaft „QT_ANDROID_PACKAGE_NAME“ hinzugefügt, um den Paketnamen festzulegen.
- Gradle wurde auf 8.10 und AGP auf 8.6.0 aktualisiert.
- Unterstützung für die Erstellung von AAR-Bibliothekspaketen hinzugefügt.
- Das native Android-Backend in „ Qt Multimedia “ wurde als veraltet markiert.
- Beim Öffnen von Bibliotheken mit „ QLibrary “ wird „JNI_OnLoad“ standardmäßig nicht mehr aufgerufen.
- QtQuickView und QML-Einbettung:
- Unterstützung für starke Typisierung der QtQuickView-API hinzugefügt.
- Es wurde eine API zur Verwaltung von QML-Inhalten hinzugefügt; in diesem Zusammenhang wurden die Java-Klassen unter QtQuickView in eigene Klassen verschoben. Dazu gehören:
- QtQuickView.SignalListener zu QtSignalListener.
- QtQuickView.StatusChangeListener zu QtQmlStatusChangeListener.
- „QtQuickView Status“ zu „QtQmlStatus“.
- Es wurden die Java-Klassen „QtAbstractItemModel“, „QtAbstractListModel“ und „QtModelIndex“ hinzugefügt, die jeweils „ QAbstractItemModel “, „ QAbstractListModel “ und „ QModelIndex “ umschließen.
- Unterstützung für die Einbettung von QML aus einem Dienst heraus hinzugefügt.
iOS
- Unterstützung für iOS 18 hinzugefügt
- Behebung eines Fehlers, bei dem UIDevice.currentDevice.orientation über „ QScreen::orientation()“ falsch gemeldet wurde
- Die Integration der Barrierefreiheit wurde verbessert.
visionOS
- Vorläufige Unterstützung für visionOS hinzugefügt.
Embedded-Plattformen
QNX
- Unterstützung für QNX 8.0 als Technology Preview hinzugefügt.
- QNX 8.0 bietet keine Multimedia-Unterstützung; verwenden Sie bei der Konfiguration die Option „
-skip qtmultimedia“.
VxWorks
- Unterstützung für VxWorks 24.03 hinzugefügt.
Boot to Qt
- Es wurde Unterstützung für Yocto 5.0 (Scarthgap) hinzugefügt.
- Die Unterstützungsstufen für Zielhardware wurden um neue unterstützte Boards für Tier 1 erweitert:
- Raspberry Pi 5.
- Die Unterstützungsstufen für die Zielhardware wurden um neue unterstützte Boards für Stufe 2 erweitert:
- NVIDIA Jetson AGX Orin Developer Kit (von Stufe 3 hochgestuft).
- Raspberry Pi 4 64-Bit (von Stufe 1 herabgestuft).
- Die Unterstützungsstufen für die Zielhardware wurden um neue unterstützte Boards für Stufe 3 erweitert:
- NXP i.MX95 (als experimentelle Version über das Qt-Kundenportal).
- Toradex i.MX 95 Verdin Evaluation Kit (als experimentelle Version über das Qt-Kundenportal).
- StarFive VisionFive 2.
- ST STM32MP15 Evaluation (von Tier 2 herabgestuft).
- NXP i.MX 8MQuad-Evaluierungskit (herabgestuft von Stufe 2).
Liste der API-Änderungen
Diese Seiten enthalten eine Übersicht über die API-Änderungen in Qt 6.8:
© 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.