Qtマウスの移動範囲をある領域に限定する

651 ワード

最初の構想はsetMouseTracking(true).そしてmouseMoveEventで処理します.QCursor::setPos(mapToGlobal(point));
マウスがエッジに移動するとブレが発生する場合があります.
 
後で考えを変えて、直接win apiを使いました.しかし、悪い点はプラットフォームをまたぐことができないことです.このようによく使われる機能Qtには解決策があるに違いないが、急いで探しに行かなかった.参考:
RECT mainRect; //windef.h    
mainRect.left = (LONG)this->geometry().left();
mainRect.right = (LONG)this->geometry().right();
mainRect.top = (LONG)this->geometry().top();
mainRect.bottom = (LONG)this->geometry().bottom();
ClipCursor(&mainRect);

ClipCursor(NULL)をキャンセルします.この方法は、ウィンドウがフォーカスを失った後に移動範囲を限定することはできないことに注意してください.ウィンドウに固定する場合は、このコードをウィンドウのフォーカスを取得する関数に配置します.