Portierung auf Qt 6
Es gibt viele Änderungen in Qt gegenüber der Vorgängerversion Qt 5 und 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 hat die geringsten Änderungen bei der Portierung auf Qt 6. Allerdings kann es sein, dass APIs, die in Qt 5.15 als veraltet oder überflüssig gekennzeichnet sind, in Qt 6 entfernt wurden.
Hier sind einige Dinge, die Sie überprüfen sollten, wenn Sie Ihre Qt 5-Anwendungen nach Qt 6 portieren.
Deaktivieren Sie die Verwendung der in Qt 5.15 veralteten C++-API
Die Verwendung von in Qt veralteten APIs wird normalerweise in Form einer Compilerwarnung angezeigt. Sie können die Verwendung auch zu einem Fehler machen, indem Sie das QT_DISABLE_DEPRECATED_UP_TO C++ Makro in Ihrem Build-System definieren. Um jede API, die in 5.15 oder älteren Qt-Versionen veraltet ist, zu deaktivieren, definieren Sie das Makro 0x050F00
, was '5.15.0' als hexadezimale Zahl kodiert ist.
In einer qmake-Projektdatei definieren Sie das Makro zum Beispiel mit:
DEFINES += QT_DISABLE_DEPRECATED_UP_TO=0x050F00
In CMake können Sie add_compile_definitions verwenden:
add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)
- Qt 5.15 Obsolete C++-Klassen
- Qt 5.15 Veraltete QML-Typen
- Qt 6 Veraltete C++-Klassen
- Qt 6 Veraltete QML-Typen
Überprüfen Sie die Änderungen an den Modulen
Ein Ziel für die Qt 6 Version ist die Beibehaltung eines schlanken Frameworks, was die Entfernung einiger Qt 5 Module in Qt 6 bedeutet. In einigen Fällen sind die APIs eines veralteten Moduls 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
Test auf grafische Regressionen
QML-Anwendungen haben ein neues grafisches Backend, das Sie auf Regressionen testen sollten. OpenGL wird nicht mehr als Standard auf den Zielplattformen garantiert und Sie sollten überprüfen, ob Ihr Grafikcode noch die gewünschten Effekte erzeugt.
Es ist immer noch möglich, OpenGL-Aufrufe in Qt-Anwendungen zu verwenden, aber die OpenGL-APIs sind in das Qt OpenGL Modul verschoben. Das grafische Backend für Qt Widgets Anwendungen ist gegenüber Qt 5 unverändert.
- Grafiken
- Änderungen an Qt Quick - Änderungen an Qt Quick Grafiken, die sich auf Qt 5-Anwendungen auswirken können
Hoch-DPI
Qt 6 unterstützt High-DPI-Displays auf allen Plattformen und berücksichtigt automatisch die Bildschirmauflösung bei der Verwendung von APIs auf höherer Ebene wie Qt Widgets oder Qt Quick. Anwendungen müssen lediglich hochauflösende Assets wie Bilder und Icons bereitstellen. Die Funktion ist immer aktiviert.
Qt 6 ändert die Standard-Rundungsregel für den Skalierungsfaktor von Qt::HighDpiScaleFactorRoundingPolicy::Round auf Qt::HighDpiScaleFactorRoundingPolicy::PassThrough, um die DPI-Einstellungen des Betriebssystems genau zu verfolgen. Bei Anwendungen, die Qt Widgets verwenden, kann es bei nicht ganzzahligen Skalierungsfaktoren zu grafischen Störungen kommen, z. B. unter Windows mit einem für 175 % konfigurierten Bildschirm. Setzen Sie in diesem Fall die Rundungsrichtlinie auf Round, um das Verhalten von Qt 5 wiederherzustellen.
Siehe High DPI für weitere Details.
Verwenden Sie die Plattform-Integrations-APIs
In Qt 6 gibt es eine bessere Integration mit den nativen APIs auf den Zielplattformen. Sie können Plattformintegrations-APIs verwenden, um natives Verhalten zu implementieren, das nicht von Qt bereitgestellt wird. Prüfen Sie für Qt 6, ob es Updates für die Zielplattform Ihrer Anwendung gibt.
Portierungswerkzeug verwenden
Zur Erleichterung der Portierung von Qt 5 auf Qt 6 steht ein Clazy-basiertes Tool zur Verfügung: Portierung von C++-Anwendungen auf Qt 6 mit Clazy-Checks.
Weitere Lektüre
- Was ist neu in Qt 6 - Änderungen in Qt 6 Minor-Versionen
- Änderungen am Build-System in Qt 6 - zum Erstellen von Qt 6 aus dem Quellcode
- CMake: Qt 5 und Qt 6 Kompatibilität - wie man sowohl Qt 5 als auch Qt 6 in CMake unterstützt
© 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.