[Maya] イベントハンドラを試す [PySide]

以前買ったまま放置してた Qtプログラミング入門―使いやすいフレームワークを基礎から解説  という本を引っ張り出していろいろと調べてます。
この本自体はQtとC++なので、PySideというわけではないですが、考え方的なものは分かるし、
関数名自体はほとんど同じなので、C++をPythonに書き直せばおおむね動くので
入門書としてはちょうど良いかなーと思います。

で。
今回は、【イベント・ハンドラ】について調べてみました。

Qtは、【ボタンを押す】【クリックする】のようななにかしらアクションを起こすと、イベントキューに積まれて
処理の順番が回ってくると、そのキューを処理していきます。
この処理をするのが【イベント・ハンドラ】と呼ばれるものになります。

このイベント・ハンドラは、QWidgetの仮想関数として実装されているので
自分の作成したいイベントハンドラを、オーバーライドすることでイベントに対する処理を作ることができます。

EventHandler

今回の見た目はこんな感じ。
.uiファイルは → こちら

コードはこんな感じ。
Eventの仮想関数の一覧は QWidgetHelpのVirtualFunctions に書いてあります。
今回は、 mousePressEvent(Dialogをクリックしたら呼ばれる)とpaintEvent(画面描画)を作ってみました。
引数の event は、状態取得のためのメソッドです。

ざっくりと処理の流れを書くと、

イベントループがイベントキューを監視
↓ Eventキューが積まれる(ClickやPush等)
イベントのTypeをチェック

イベント・ハンドラ実行


こんな感じで、常にループが回っていて
そいつがなにか起きたときに仮想関数を呼びに行っている…という事らしいです。

コレを使うといろいろ楽しいことができそうですね(´ω`)

コメントを残す

メールアドレスが公開されることはありません。


*