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 <platform>Extras に含まれていたプラットフォーム固有の機能が QNativeInterface に移行されましたmayaSharedGLWidget プロパティが mayaSharedQOpenGLContext に置き換えられましたMQtUtil::resourceGLContext() は QOpenGLContext を返すようになりましたQObjects の明示的なラッピングは不要になりましたQtRegEx は、QRegularExpression に置き換えられましたQAction、QActionGroup、QShortcut、および QFileSystemModel は QtGui に移行されましたQT_DISABLE_DEPRECATED_UP_TO = 0x050F00 プリプロセッサ 命令を使用すると、廃止された Qt API を特定するのに役立ちますQt プラグインをビルドしたユーザは、フォーラムの特別な Qt6 セクションで Qt6 の使用体験に関するフィードバックを提供することをお勧めします。
高 DPI ロジックを確認し、高 DPI ディスプレイおよび異なるスケーリング環境の両方でプラグインが正しく表示されることを確認します。
Qt <platform>Extras に含まれていたプラットフォーム固有の機能が QNativeInterface に移動されました詳細については、ネイティブ インタフェースの Qt ドキュメントを参照してください
PySide6 Qt 列挙型が Shiboken 列挙から真の Python 列挙型に変更されました。これらは一般的に互換性がありますが、いくつかの違いがあります。
古い列挙型から新しい列挙型へのマイグレーションについては、Qt ドキュメントの「古い列挙型からスムーズな移行を行う」を参照してください。
Maya の Qt6 および Qt5 ビルドの両方で PySide スクリプトを使用する場合、try...except ブロックを使用して適切なバージョンの Qt を読み込むことができます。
try:
from PySide6.QtCore import QObject, Qt
except ImportError:
from PySide2.QtCore import QObject, Qt
pyside2-uic や pyside2-rcc などのツールの名前が pyside6-uic や pyside6-rcc に変更されました。
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*>();
QGLContext は Qt6 で廃止されたため、MQtUtil::resourceGLContext() は QOpenGLContext を返すようになりました。
QGLContext *MQtUtil::resourceGLContext()
QObjects の明示的なラッピングは不要になりましたQObjects の明示的なラッピングは不要になりました。QVariant を変更すると、最も具体的なラッパーが常に自動的に使用されるようになります。
たとえば、この場合は次のようになります。
app = QApplication.instance()
sharedGLContext = app.property("mayaSharedQOpenGLContext")
返されるプロパティは QOpenGLContext です。手動でキャストしたりラップしたりする必要はありません。
QtRegEx は、QRegularExpression に置き換えられました。 QAction、QActionGroup、QShortcut、および QFileSystemModel は QtGui に移行されました。 QT_DISABLE_DEPRECATED_UP_TO = 0x050F00 プリプロセッサ命令を使用しますQT_DISABLE_DEPRECATED_UP_TO = 0x050F00 プリプロセッサ命令により、Qt6 にない廃止された Qt API を使用する Qt5 コードがコンパイルされるのを防ぐことができます。この命令は、Qt5 を使用している場合でも使用する必要があります。詳細については、「Qt 移行ガイドの廃止された C++ API の使用の無効化に関するセクション」を参照してください。