このページでは

Qt 6 への移植

Qt 5からQt 6への移行に伴い、Qtには多くの変更が加えられています。Qt 6にアップグレードする前に、お使いのQt 5アプリケーションがQt 5.15に更新されていることを確認してください。 Qt 6への移植において、変更点が最も少ないのは最新のQt 5バージョンです。ただし、Qt 5.15で非推奨または廃止とマークされたAPIは、Qt 6で削除されている可能性があります。

Qt 5 アプリケーションを Qt 6 に移行する際には、以下の点を確認してください。

Qt 5.15 で非推奨となった C++ API の使用を無効にする

Qt で非推奨となった API の使用は、通常、コンパイラ警告として表示されます。 また、ビルドシステムでQT_DISABLE_DEPRECATED_UP_TO というC++マクロを定義することで、その使用をエラーとして扱うようにすることもできます。Qt 5.15またはそれ以前のバージョンで非推奨となったAPIの使用を無効にするには、このマクロを0x050F00 と定義してください。これは「5.15.0」を16進数でエンコードした値です。

たとえば、qmakeプロジェクトファイルでは、次のようにマクロを定義します。

DEFINES += QT_DISABLE_DEPRECATED_UP_TO=0x050F00

CMake では、`add_compile_definitions` を使用できます:

add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)

モジュールの変更点を確認する

Qt 6 リリースの目標の一つは、フレームワークを合理化することであり、そのため Qt 6 では Qt 5 のモジュールの一部が削除されています。場合によっては、非推奨となったモジュールの API が別のモジュールで利用可能なこともあります。今後の Qt 6 リリースでは、新しいモジュールや以前のモジュールが追加される可能性があります。

グラフィカルな回帰バグのテスト

QML アプリケーションには新しいグラフィカルバックエンドが採用されているため、回帰バグがないかテストを行う必要があります。ターゲットプラットフォームにおいて、OpenGL がデフォルトで利用可能であることは保証されなくなりました。そのため、グラフィックスコードが依然として意図した通りの効果を生み出しているかを確認する必要があります。

Qt アプリケーションで OpenGL 呼び出しを使用することは依然として可能ですが、OpenGL API は Qt OpenGL モジュールに移動されました。Qt Widgets アプリケーションのグラフィックスバックエンドは、Qt 5から変更されていません。

高DPI

Qt 6 はすべてのプラットフォームで高DPIディスプレイをサポートしており、Qt Widgets やQt Quick などの高レベル API を使用する際、ディスプレイの解像度を自動的に考慮します。アプリケーション側で用意する必要があるのは、画像やアイコンなどの高解像度アセットのみです。この機能は常に有効になっています。

Qt 6では、オペレーティングシステムのDPI設定を正確に反映するために、デフォルトのスケーリング係数の丸めポリシーがQt::HighDpiScaleFactorRoundingPolicy::Round からQt::HighDpiScaleFactorRoundingPolicy::PassThrough に変更されました。Qt Widgets を使用しているアプリケーションでは、スケーリング係数が整数でない場合(例えば、ディスプレイが175%に設定されているWindowsなど)に、グラフィックの不具合が発生する可能性があります。その場合は、丸めポリシーをRound に設定することで、Qt 5の動作に戻すことができます。

詳細については、「高DPI」を参照してください。

プラットフォーム統合APIの使用

Qt 6 では、ターゲットプラットフォームのネイティブ API との統合が強化されています。プラットフォーム統合 API を使用することで、Qt では提供されていないネイティブな動作を実装できます。Qt 6 については、アプリケーションのターゲットプラットフォームに関する更新情報を確認してください。

移植ツールの使用

Qt 5 から Qt 6 への移植を容易にする Clazy ベースのツールが利用可能です。「Clazy チェックを使用した C++ アプリケーションの Qt 6 への移植」を参照してください。

参考資料

QTextStreamの変更点

Qt 6 では、QTextStream::setCodec() メソッドが削除されました。代わりに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.