プログラム関連~チラシの裏~―eventFilterを使ってみたの詳細表示プログラム関連~チラシの裏~スパム対策したりプログラム組んだり色々やってる為替とは別の面を表に出してみた。ないブログに表示されています。新しい記事を書く事で広告が消えます。()Category:eventFilterを使ってみたQObjectを継承したQWidget系のクラスはeventFilterでイベントを監視する事が可能。エディットボックスやコンボボックスに来たイベントを実行する前に「監視」できる。いうか、仕事上じゃ必須か・・・。リストボックスでリストを選択したときに来るマウスイベントを取得して強制キャンセル。tabキーを押したときにフォーカスを変更したりできるのかも~。※キー入力はkeypressEventというのがあるのでなんていろいろ考えてみました。いうわけで、色々操作したときに来るイベントをeventFilter上で監視してコンソールに表示するサンプル。エデットボックスのクラスポインタ等をinstallEventFilterしてイベントが来る前に表示するクラスにしてみました。);これで、BのクラスにeventFilterを用意するだけでAのイベントを取得する事ができます。サンプルコードの中にある通りです。イベントフィルタを消したいときはremoveEventFilterをインストールと同じ方法で呼び出すだけ。イベントフィルタの監視対象になった物はイベントが来るたびに、eventFilterに飛ばされます。QObjectクラスにあるvirtualのeventFilterの中身を作くれば監視可能。戻り値でeventを実行するか判別する事ができる。trueならフィルタしeventを発行しない。mouseイベントが来たときにtureの戻り値になるようにすればマウスイベントを無視する設定にもできる。*event)第一引数はイベントを受けるQObject。第二引数は発行されるイベント。イベント監視クラスをQObjectを継承して作って監視する。キーイベント色々やったがTABでフォーカスを移動した場合。あれ?フォーカスが変わるイベントが来るわけでもない。eventFilterに対してキーイベントがきていない件。赤文字は4.4.0で追加されたものです。左右に関係なくマウスボタンを押した場合。QMouseEventにキャスト可能。Pressの後にくる。QMouseEventにキャスト可能。ダブルクリック時にくる。PressとReleaseにもメッセージが飛びます。QMouseEventにキャスト可能。マウスボタンを押してるときのみ。QMouseEventにキャスト可能。マウスカーソルがQWidgetの矩形内に入った場合。マウスカーソルがQWidgetの矩形外に出た場合。マウスの真中にあるホイールを回転させた場合。QWheelEventにキャスト可能。マウスで右クリックをした場合。ポップアップメニューを出すためにある模様。マウスを同じ位置に置いておくと出る小さなヘルプです。QLabel等のWidget上にマウスカーソルを乗せたままで発行。発行後はマウスカーソルがLeave(11)するまでMouseMove(5)の変わりに発行されつづけます。QHelpEventにキャストしマウス座標取得可能。ウィンドウとして使うWidgetに来るメッセージです。タイトルバーやウィンドウサイズを変更する場合のライン上でメッセージが来ます。ほかにメッセージが来る場所があるかもしれない。マウス座標はクライアント領域から判定するのでマイナス値来ます。ウィンドウとして使うWidgetに来るメッセージです。NonClientAreaMouseMoveと同じ条件でメッセージが来ます。ツールチップを変更した場合にくるらしいが・・・ツールチップを表示するプログラムにしないと効果が無い。4.4.0以降に追加された。今のところ、QLabelにeventFilterを入れて見張った所。多くのイベントが到着してる事がわかった。マウスの動作をまとめてみて何が起きるのかチェックしました。いっても、みんな知ってるか。Message;でオブジェクトを作成する。↑使い方を考え直して、staticで絶対的なオブジェクトつくったので不用になった。あとは、インストールするQObjectに対してMessageChecker::Install(ui.inputLabe1);を呼ぶ。これでメッセージ表記するようになります。consoleを追加してください。詳しい中身はソースコード見てください。Asisstantのヘルプみながらやるといいかもしれません。●メッセージチェッカーサンプルコード(zip)一応、マウスイベントのみ全て見地。関係ないイベントは番号で表示するようになってます。バージョンアップしとります。Exampleを実行する。(03/23)メルセンヌ・ツイスタ(擬似乱数)のクラスサンプル(03/22)QT(キュート)/Windowsで環境を作成してサンプル実行(03/22)[失敗例]Qt(キュート)でウィンドウを作る。suna77777.。