0

Qt (C++、MinGW、Windows 7) ではQCursor::setPos(...)、システム レベルではなく、アプリケーション レベルでカーソルの位置を変更するようです。たとえばmouseMoveEvent、カーソルの動きをインターセプトしてキャンセルすると (setMouseTracking(false)マウス ボタンが押されたときにのみこのキャンセルを行うように)、マウス ボタンを押したままにしている限り、カーソルは移動しません。しかし、ボタンを離して少し動かすと、カーソルは動きを妨げていなければあったはずの場所に移動します。この動作は正常ですか?マウスカーソルがシステムレベルで変更されるように回避するにはどうすればよいですか?

十分に明確でない場合は、コード スニペットを提供できます。

4

1 に答える 1

3

QWidget のカーソルを移動すると、常にウィジェットの座標が使用されます。グローバル マウス ポジショニングには、代わりにデスクトップ ウィジェット (QDesktopWidget) を使用する必要があります。QApplication::desktop()static 関数で取得できます。例:

QApplication::desktop()->cursor().setPos(0,0);

これにより、マウス カーソルがデスクトップの左上隅に移動します。

于 2012-11-22T03:09:19.093 に答える