1

mousePressEvent/mouseReleaseEvent を再実装する単純な親ウィジェットがあります。親の子ウィジェットは、enterEvent/leaveEvent を使用します。子ウィジェットの上にマウスを置くと、leaveEvent/enterEvent が実行されますが、マウスをクリックしたままにすると、mousePressEvent が実行されますが、enterEvent/leaveEvent はサイレントになります (つまり、クリック アンド ドラッグはありません)。これを引き起こしている可能性のあるものについてのアイデアはありますか?

4

1 に答える 1

4

ウィジェットのマウス ボタンを押したままにすると、そのウィジェットは、ボタンを離すまでマウス イベントを取得します。これは Qt の特別な機能ではありません。私が知っている他のすべての GUI API で同様の動作を見つけることができます。

Qt ドキュメントの関連部分を見てください。

QWidget / イベント:

mousePressEvent() は、マウス カーソルがウィジェット内にあるときにマウス ボタンが押されたとき、またはウィジェットがgrabMouse() を使用してマウスをグラブしたときに呼び出されます。マウスを離さずに押すことは、事実上、grabMouse() を呼び出すことと同じです。

void QWidget::grabMouse () :

マウス入力を取得します。このウィジェットは、releaseMouse() が呼び出されるまで、すべてのマウス イベントを受け取ります。他のウィジェットはマウス イベントをまったく取得しません

于 2012-04-05T20:11:52.700 に答える