« キーボード、マウス情報をバッファリングする | トップページ | キーボード、マウス情報のバッファリングを確認しました »

2014年9月21日 (日)

とりあえずマウスイベントを確認する

暫定でキーボードの情報、マウスの情報をバッファリングするクラスを作ったのですが、最終的に通信で送信する入力デバイスの情報はこれからTrial and Errorで調整する必要があります…

Qtでイベントが取得できないでいるキーも気になるのですが、まず簡単そうなマウスイベントを確認しました。

ボタンのクリック、リリース、ホイールの正転、逆転は簡単に取得できるのですが、マウスが移動する度に起こるはずのmouseMoveEventが実行されません。マウス移動情報をBrynhildrサーバさんに送らなければならないので、これでは困ります。

Qt Assistant で QWidget の項目を眺めると、メソッド「mouseMoveEvent()」の説明に「setMouseTracking()」へのリンクがありました。mouse tracking mode というのを true に設定しないとこのイベントは起きないそうです。

MainWindowのコンストラクタに setMouseTracking(true) を追加したら、マウスを移動する度にイベントが発生するようになりました。マウスの移動情報が必要ないアプリケーションなら、トラッキングする必要はないので初期設定では false になっているようですね。

[Debug Print]

$ ./release/qtbrynhildr.exe
[MainWindow] mouseMoveEvent: QPoint(45,7)
[MainWindow] mouseMoveEvent: QPoint(45,16)
[MainWindow] mouseMoveEvent: QPoint(45,26)
[MainWindow] mouseMoveEvent: QPoint(45,34)
[MainWindow] mouseMoveEvent: QPoint(45,40)
[MainWindow] wheelEvent: 15 (ticks = 1 )
[MainWindow] wheelEvent: 15 (ticks = 1 )
[MainWindow] wheelEvent: -15 (ticks = -1 )
[MainWindow] wheelEvent: -15 (ticks = -1 )
[MainWindow] wheelEvent: 15 (ticks = 1 )
[MainWindow] wheelEvent: -15 (ticks = -1 )
[MainWindow] wheelEvent: -15 (ticks = -1 )
[MainWindow] wheelEvent: 15 (ticks = 1 )
[MainWindow] wheelEvent: -15 (ticks = -1 )
[MainWindow] wheelEvent: -15 (ticks = -1 )
[MainWindow] mouseMoveEvent: QPoint(48,79)
[MainWindow] mouseMoveEvent: QPoint(49,76)
[MainWindow] mouseMoveEvent: QPoint(50,74)
[MainWindow] mouseMoveEvent: QPoint(51,73)
[MainWindow] mouseMoveEvent: QPoint(51,71)
[MainWindow] mouseMoveEvent: QPoint(52,70)
[MainWindow] mousePressEvent: Left Button : QPoint(52,70)
[MainWindow] mouseReleaseEvent: Left Button : QPoint(52,70)
[MainWindow] mousePressEvent: Right Button : QPoint(52,70)
[MainWindow] mouseReleaseEvent: Right Button : QPoint(52,70)
[MainWindow] mouseMoveEvent: QPoint(52,71)
[MainWindow] "JP" : Press : VK_Code = 44
[MainWindow] "JP" : Release : VK_Code = 44
[MainWindow] "JP" : Press : VK_Code = 51
[MainWindow] "JP" : Release : VK_Code = 51
[MainWindow] "JP" : Press : VK_Code = 44
[MainWindow] "JP" : Release : VK_Code = 44
[MainWindow] "JP" : Press : VK_Code = 20
[MainWindow] "JP" : Release : VK_Code = 20
[MainWindow] "JP" : Press : VK_Code = 20
[MainWindow] "JP" : Release : VK_Code = 20
[MainWindow] "JP" : Press : VK_Code = 51
[MainWindow] "JP" : Release : VK_Code = 51
[MainWindow] mouseMoveEvent: QPoint(52,72)
[MainWindow] mouseMoveEvent: QPoint(52,71)
[MainWindow] mouseMoveEvent: QPoint(52,70)
[MainWindow] mouseMoveEvent: QPoint(51,69)
[MainWindow] mouseMoveEvent: QPoint(50,67)

(追記)

ダブルクリックイベント(mouseDooubleClickEvent())もハンドリングしないといけなさそうです。
inputMEthodEvent()も調査しないと。

« キーボード、マウス情報をバッファリングする | トップページ | キーボード、マウス情報のバッファリングを確認しました »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: とりあえずマウスイベントを確認する:

« キーボード、マウス情報をバッファリングする | トップページ | キーボード、マウス情報のバッファリングを確認しました »