Auf dieser Seite

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=0x050F00

In CMake können Sie `add_compile_definitions` verwenden:

add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)

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

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.

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

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