トップ 一覧 ソース 検索 ヘルプ RSS ログイン

Qtのイベント処理メモ

イベント処理メモというより、イベント処理乗っ取り方法メモ?

1.イベントハンドラで処理する

resizeEvent()やcloseEvent()でよく使われてるやり方。親クラスの仮想関数を再定義することでイベントを独自に処理する。

2.QObject::event()を再定義する

イベントハンドラに送られる直前で独自の処理を行う方法。複数のイベントをまとめて乗っ取るときに便利? 1で処理できない場合はこれで。

3.オブジェクトにイベントフィルタを指定

QObject::installEventFilter()でイベントフィルタを指定することで、他のオブジェクトからイベントを乗っ取ってしまう方法。

monitor->installEventFilter( filter );

これで、monitorへのイベントが先にfilterで処理される・・・ はず。いちいち継承して処理を変えるのが面倒なときに便利? ただし、オブジェクトを破棄するときは注意が必要。

4.QCoreApplicationにイベントフィルタを指定

qApp->setEventFilter()でイベントフィルタを指定。すべてのオブジェクトへのメッセージを事前に処理できるはず。

5.QCoreApplication::notify()を再定義

QApplicationを継承したクラスを作って、notify()を再定義。これでだめなら、Qtにくる前で処理するしかないw


(2009/11/12 メモ,Qt