変更点Qt GUI
Qt 6 における変更点は、フレームワークをより効率的で使いやすくするための意図的な取り組みの結果です。
各リリースにおいて、すべてのパブリック API についてバイナリ互換性とソース互換性を維持するよう努めています。しかし、Qt をより優れたフレームワークにするための取り組みにおいて、一部の変更は避けられませんでした。
このトピックでは、Qt GUI におけるそれらの変更点をまとめ、それらに対処するためのガイダンスを提供します。
カーネルクラス
QBitmap クラス
QPixmap からQBitmap を暗黙的に生成する方法は、もはやサポートされていません。コンストラクタと代入演算子は明示的なものとなり、非推奨としてマークされています。代わりに、新しい静的ファクトリ関数fromPixmap を使用してください。
QCursor クラス
QPixmap からQCursor を暗黙的に生成することはサポートされなくなりました。コンストラクタは明示的に変更されました。
QKeyCombination クラス
QKeyCombination は、キーとオプションの修飾キーの組み合わせを格納するための新しいクラスです。これは、Qt::Key 列挙型の値と修飾キーを型安全な方法で組み合わせるための代替手段として使用すべきです。
現在、operator+() を使用してキーと修飾子を組み合わせているコードについては、将来の C++ 標準では、関連性のない列挙型間の算術演算が不正と宣言される可能性が高いため、移行することを推奨します。operator|() を使用し、int を期待する API を、代わりにQKeyCombination を期待するように変更してください。
キーの組み合わせとしてint を期待する既存のAPIは、QKeyCombination::toCombined()を使用して呼び出すことができます。
テキストクラス
QFontDatabase クラス
QFontDatabase クラスには、現在、静的メンバ関数のみが存在します。コンストラクタは非推奨となりました。例えば、
const QStringList fontFamilies = QFontDatabase().families();の代わりに
const QStringList fontFamilies = QFontDatabase::families();QFont クラス
QFont::Weight 列挙子の数値は、OpenTypeのウェイト値に合わせて変更されました。QFont::setWeight()は、int の代わりに列挙子値を期待しており、整数を引数としてセッターを呼び出すコードはコンパイルエラーとなります。従来の整数値を引き続き使用する場合は、QFont::setLegacyWeight()を使用してください。
描画クラス
xml-ph-0000@deepl.internalやその他の印刷関連クラスに関する情報は、 Qt Print SupportQPagedPaintDevice を参照してください。
ユーティリティクラス
QIntValidator および QDoubleValidator
setRange() メソッドは、もはや仮想としてマークされていません。
OpenGL クラス
Qt のレンダリング基盤として Qt RHI が導入されたことに伴い、QOpenGL という接頭辞を持つクラスのほとんどは Qt OpenGL モジュールに移動されました。
詳細については、 Qt OpenGL 移植ガイドを参照してください。
注目すべき例外は、QOpenGLContext クラスで、これは依然としてQt GUI に残っています。
さらに、QOpenGLWidget クラスは、Qt OpenGL Widgets という新しいモジュールに移動されました。
QOpenGLContext クラス
QOpenGLContext::versionFunctions() 関数は、QOpenGLVersionFunctionsFactory::get() に置き換えられました。QOpenGLVersionFunctionsFactory は現在、パブリッククラスとなっており、 Qt OpenGL モジュールの一部です。
ANGLE
Windows では、サードパーティ製の OpenGL ES から Direct 3D への変換ツールである ANGLE が、Qt に含まれなくなりました。つまり、Qt::AA_UseOpenGLES および環境変数QT_OPENGL=angle は、もはや何の効果も持ちません。動的 OpenGL ビルドでは、OpenGL 本体の初期化に失敗した場合でも、ANGLE への自動フォールバックは行われません。QWindow またはQWidget ベースのアプリケーションで、例えばQOpenGLWidget を通じて OpenGL を直接使用する場合、実行時には OpenGL 本体しか選択肢がなくなります。ただし、事前ビルド済みの Qt パッケージに同梱されている Mesa llvmpipe のような、純粋なソフトウェア OpenGL 実装を使用するという代替手段は、引き続き利用可能です。Qt Quick およびQt Quick の3Dアプリケーションについては、Qt 6ではOpenGLに加え、Direct 3D 11、Vulkan、Metalのサポートが導入されました。WindowsではデフォルトでDirect 3Dが選択されるため、OpenGL以外のグラフィックスAPIもサポートされることで、ANGLEの削除による影響は緩和されています。
ネイティブクリップボード統合
Qt 5では、QtMacExtras のQMacPasteboardMime や、WindowsのQPA APIのQWindowsMime を通じて、プラットフォーム固有またはカスタムクリップボード形式をQtに統合するためのインターフェースが提供されていました。Qt 6.6以降、同等の機能は、macOS向けのQUtiMimeConverter クラスおよびWindows向けのQWindowsMimeConverter クラスによって提供されています。
QWindowsMime からQWindowsMimeConverter への移植は、仮想インターフェースが同一であるため、実質的に変更は不要です。ただし、Qt 6 では、QWindowsMimeConverter の実装を登録する必要はなくなりました。この型をインスタンス化することで、コンバータが暗黙的に登録されます。
QMacPasteboardMimeをQUtiMimeConverter に移植するには、一部の仮想関数の名前を変更する必要があります。なお、QMacPasteboardMime のAPIでは、macOSのネイティブクリップボード形式に対して旧式の用語「flavor 」を使用していましたが、現在このプラットフォームでは「Uniform Type Identifiers 」、すなわちUTIが使用されており、Qtでは関数名やパラメータ名にこの変更を反映しています。
mimeFor およびflavorFor 関数は、それぞれmimeForUti およびutiForMime の実装に置き換えられます。これらは、コンバータが入力形式を変換できる MIME タイプまたはUTI の名前を返すはずですので、移植作業では通常、既存のオーバーライド関数の名前を変更するだけで済みます。QUtiMimeConverter にあるconvertToMime 、convertFromMime 、およびcount 関数は、QMacPasteboardMime バージョンのものと同一です。
canConvert 、converterName 関数はもはや必要ありません。これらは上記の関数の実装によって暗黙的に扱われるため、これらの関数のオーバーライドは削除できます。
QWindowsMimeConverter と同様に、登録は型をインスタンス化することで行われます。
© 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.