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 の使用の無効化に関するセクション」を参照してください。