Portierung auf Qt 6
Es gibt zahlreiche Änderungen an Qt von der Vorgängerversion Qt 5 zu Qt 6. Bevor Sie auf Qt 6 aktualisieren, stellen Sie sicher, dass Ihre Qt-5-Anwendung auf Qt 5.15 aktualisiert ist. Die neueste Qt-5-Version weist bei der Portierung auf Qt 6 die geringsten Änderungen auf. Allerdings können APIs, die in Qt 5.15 als veraltet oder überholt gekennzeichnet sind, in Qt 6 entfernt worden sein.
Hier sind einige Punkte, die Sie überprüfen sollten, wenn Sie Ihre Qt-5-Anwendungen auf Qt 6 portieren.
Deaktivieren Sie die Verwendung von C++-APIs, die in Qt 5.15 als veraltet markiert sind
Die Verwendung von in Qt als veraltet markierten APIs wird in der Regel in Form einer Compiler-Warnung angezeigt. Sie können die Verwendung auch als Fehler ausweisen, indem Sie das C++-Makro „ QT_DISABLE_DEPRECATED_UP_TO “ in Ihrem Build-System definieren. Um alle in Qt 5.15 oder älteren Qt-Versionen als veraltet markierten APIs zu deaktivieren, definieren Sie das Makro auf „ 0x050F00 “, was der hexadezimalen Zahl „5.15.0“ entspricht.
Definieren Sie das Makro beispielsweise in einer qmake-Projektdatei wie folgt:
DEFINES += QT_DISABLE_DEPRECATED_UP_TO=0x050F00In CMake können Sie `add_compile_definitions` verwenden:
add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)- Veraltete C++-Klassen in Qt 5.15
- In Qt 5.15 veraltete Qml-Typen
- Veraltete C++-Klassen in Qt 6
- Qt 6: Veraltete Qml-Typen
Überprüfen Sie die Änderungen an den Modulen
Ein Ziel der Qt 6-Version ist es, ein schlankes Framework zu gewährleisten, was die Entfernung einiger Qt 5-Module in Qt 6 bedeutet. In einigen Fällen sind APIs aus einem veralteten Modul in einem anderen Modul verfügbar. In zukünftigen Qt 6-Versionen können neue oder frühere Module hinzugefügt werden.
- Entfernte Module in Qt 6.0
- Neue Module in Qt 6.0
- Neue und wiederhergestellte Module in Qt 6.1
- Neue und wiederhergestellte Module in Qt 6.2
- Änderungen an Qt-Modulen in Qt 6 – Liste der Änderungen pro Qt-Modul
Testen auf grafische Regressionen
QML-Anwendungen verfügen über ein neues grafisches Backend, das Sie auf Regressionen testen sollten. OpenGL ist auf Zielplattformen nicht mehr standardmäßig garantiert, und Sie sollten überprüfen, ob Ihr Grafikcode weiterhin die gewünschten Effekte erzeugt.
Es ist weiterhin möglich, OpenGL-Aufrufe in Qt-Anwendungen zu verwenden, jedoch wurden die OpenGL-APIs in das Qt OpenGL Modul verlagert. Das Grafik-Backend für „ Qt Widgets “-Anwendungen ist gegenüber Qt 5 unverändert.
- Grafik
- Änderungen an „ Qt Quick “ – Änderungen an der Grafik von „ Qt Quick “, die sich auf Qt-5-Anwendungen auswirken können
Hohe DPI
Qt 6 unterstützt High-DPI-Displays auf allen Plattformen und berücksichtigt bei der Verwendung von übergeordneten APIs wie Qt Widgets oder Qt Quick automatisch die Bildschirmauflösung. Anwendungen müssen lediglich hochauflösende Assets wie Bilder und Symbole bereitstellen. Die Funktion ist immer aktiviert.
Qt 6 ändert die Standard-Rundungsregel für den Skalierungsfaktor von „ Qt::HighDpiScaleFactorRoundingPolicy::Round “ zu „ Qt::HighDpiScaleFactorRoundingPolicy::PassThrough “, um die DPI-Einstellungen des Betriebssystems genau zu berücksichtigen. Bei Anwendungen, die „ Qt Widgets “ verwenden, können bei nicht ganzzahligen Skalierungsfaktoren grafische Störungen auftreten, beispielsweise unter Windows bei einer auf 175 % konfigurierten Anzeige. In diesem Fall sollten Sie die Rundungsregel auf „ Round “ setzen, um das Verhalten von Qt 5 wiederherzustellen.
Weitere Informationen finden Sie unter „High DPI “.
Verwenden Sie die APIs zur Plattformintegration
Qt 6 bietet eine verbesserte Integration mit den nativen APIs auf den Zielplattformen. Sie können die Plattform-Integrations-APIs nutzen, um natives Verhalten zu implementieren, das von Qt nicht bereitgestellt wird. Prüfen Sie für Qt 6, ob Updates für die Zielplattform Ihrer Anwendung verfügbar sind.
Verwenden Sie das Portierungstool
Es steht ein auf Clazy basierendes Tool zur Verfügung, das die Portierung von Qt 5 auf Qt 6 erleichtert: Portierung von C++-Anwendungen auf Qt 6 mit Clazy-Prüfungen.
Weiterführende Informationen
- Neuerungen in Qt 6 – Änderungen in den Qt-6-Nebenversionen
- Änderungen am Build-System in Qt 6 – zum Kompilieren von Qt 6 aus dem Quellcode
- CMake: Kompatibilität zwischen Qt 5 und Qt 6 – so unterstützen Sie sowohl Qt 5 als auch Qt 6 in CMake
Änderungen an QTextStream
Die Methode `QTextStream::setCodec()` wurde in Qt 6 entfernt. Verwenden Sie stattdessen ` QTextStream::setEncoding()`.
© 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.