PySideでMaya終了のイベントを登録する!!




Mayaって、終了する時に、Shelfの設定や、Script Editorに書いたコードとか、色々なものを保存しています!自分のツールでも、やってみたいケースがあると思います!

幸いMayaの場合は「cmds.scriptJob」を使うことで可能ですが、PySide(Qt)を使って、アプリケーションが終了する時に、保存などの処理を実行する方法を見てみたいと思います!

アプリケーション終了時に、任意の処理を追加するには「QCoreApplication」のシグナル「aboutToQuit」に実行したい関数をコネクトすればできちゃいます!

scriptJobよりもかっこいい!(ぇ

あれ、MayaとかだとQApplicationのインスタンスは作ろうと思っても、「A QApplication instance already exists.」っとエラーするじゃん!どうするの!っと思った方もいるかと思います。

「QApplication」のインスタンスは、Mayaなどインスタンス制作済みの環境であれば、「QtGui.qApp」でアクセスすることができます!

from PySide import QtGui
QtGui.qApp.aboutToQuit.connect(関数・メソッド)

PySide(Qt)のSignal&Slotは、重複したコネクションをすると、全てのスロットが実行されます。Maya終了時に保存などの処理が何度も実行されないように、「QtCore.Qt.UniqueConnection」を併用したほうが良いかもしれません、、、

もし、重複したコネクションをしようとした時に、エラーが表示されます!もしエラーしてしまう場合、処理の流れを再検討したほうがいいと思います(`・ω・´)ゞ

from PySide import QtCore
from PySide import QtGui

QtGui.qApp.aboutToQuit.connect(関数・メソッド, QtCore.Qt.UniqueConnection)