Qt の変更点

Maya Qt6 のマイグレーション

Maya は Qt5 および PySide2 から Qt6 および PySide6 に移行しました。

Qt5 から Qt6 への C++ ソース コードの移植に関する情報は、https://doc.qt.io/qt-6/portingguide.html を参照してください。

Qt5 から Qt6 への Python ソース コードの移植に関する情報は、https://doc.qt.io/qtforpython-6/gettingstarted/porting_from2.html を参照してください。

次の変更は、Maya devkit のユーザに最も影響を与えます。

Qt プラグインをビルドしたユーザは、フォーラムの特別な Qt6 セクションで Qt6 の使用体験に関するフィードバックを提供することをお勧めします。

Qt High DPI は Qt6 では常にオンです

高 DPI ロジックを確認し、高 DPI ディスプレイおよび異なるスケーリング環境の両方でプラグインが正しく表示されることを確認します。

先頭に戻る

以前は Qt <platform>Extras に含まれていたプラットフォーム固有の機能が QNativeInterface に移動されました

詳細については、ネイティブ インタフェースの Qt ドキュメントを参照してください

先頭に戻る

PySide6 Qt 列挙型が真の Python 列挙型になりました

PySide6 Qt 列挙型が Shiboken 列挙から真の Python 列挙型に変更されました。これらは一般的に互換性がありますが、いくつかの違いがあります。

古い列挙型から新しい列挙型へのマイグレーションについては、Qt ドキュメントの「古い列挙型からスムーズな移行を行う」を参照してください。

先頭に戻る

PySide Python モジュールの名前が PySide2 から PySide6 に変更されました

Maya の Qt6 および Qt5 ビルドの両方で PySide スクリプトを使用する場合、try...except ブロックを使用して適切なバージョンの Qt を読み込むことができます。

try:
  from PySide6.QtCore import QObject, Qt
except ImportError:
  from PySide2.QtCore import QObject, Qt

先頭に戻る

PySide ツール名が PySide2 から PySide6 に変更されました

pyside2-uicpyside2-rcc などのツールの名前が pyside6-uicpyside6-rcc に変更されました。

先頭に戻る

mayaSharedGLWidget プロパティは mayaSharedQOpenGLContext に置き換えられました

mayaSharedGLWidget プロパティは削除され、mayaSharedQOpenGLContext プロパティに置き換えられました。

mayaSharedGLWidget と同様に、mayaSharedQOpenGLContext の目的は、共有 GL コンテキストへのアクセスを許可することです。

mayaSharedGLWidget は共有コンテキストを持つ QGLWidget への QWidget ポインタでした。コンテキストはウィジェットから取得されました。

mayaSharedQOpenGLContext は Maya ビューポートの QOpenGLContext への QObject ポインタです。つまり、コンテキストは GL ウィジェット経由ではなく、mayaSharedQOpenGLContext から直接取得されます。

たとえば、Python では次のようになります。

from PySide6.QtWidgets import QApplication
context = QApplication.instance().property("mayaSharedQOpenGLContext")
# context is type <class 'PySide6.QtGui.QOpenGLContext'>

C++ では次のようになります。

#include <QApplication>
#include <QVariant>
#include <QOpenGLContext>
[...]
  QVariant ctxVariant = QApplication::instance()->property("mayaSharedQOpenGLContext");
  QOpenGLContext *context = ctxVariant.value<QOpenGLContext*>();

先頭に戻る

MQtUtil::resourceGLContext() は QOpenGLContext を返すようになりました

QGLContext は Qt6 で廃止されたため、MQtUtil::resourceGLContext()QOpenGLContext を返すようになりました。

QGLContext *MQtUtil::resourceGLContext()

先頭に戻る

QObjects の明示的なラッピングは不要になりました

QObjects の明示的なラッピングは不要になりました。QVariant を変更すると、最も具体的なラッパーが常に自動的に使用されるようになります。

たとえば、この場合は次のようになります。

app = QApplication.instance()
sharedGLContext = app.property("mayaSharedQOpenGLContext")

返されるプロパティは QOpenGLContext です。手動でキャストしたりラップしたりする必要はありません。

先頭に戻る

その他の変更点

先頭に戻る

QT_DISABLE_DEPRECATED_UP_TO = 0x050F00 プリプロセッサ命令を使用します

QT_DISABLE_DEPRECATED_UP_TO = 0x050F00 プリプロセッサ命令により、Qt6 にない廃止された Qt API を使用する Qt5 コードがコンパイルされるのを防ぐことができます。この命令は、Qt5 を使用している場合でも使用する必要があります。詳細については、「Qt 移行ガイドの廃止された C++ API の使用の無効化に関するセクション」を参照してください。

先頭に戻る