如果我理解正確,那麼您可以在這裏執行檢查,如if (x,y in range) do_something
。
另一種方法是創建一個尺寸爲400x400的假部件並重新實現它的鼠標事件。
第三個(可能是矯枉過正)是使用事件過濾器(請參閱here)。
更新:
你不能只是 「容易」 處理使用Qt Designer中的鼠標事件。對於該方案,每個.ui
方案几乎總是與相應的實現配對。這是你的處理應該完成的地方。
Qt Designer非常適合自動信號插槽處理,但mouseMoveEvent
是event
,與插槽系統無關。
我會說我將如何實現這一點,你可以選擇(見前三種可能的方式)。
我會創建一些DummyWidget
,這將有一個400x400尺寸和自定義虛擬mouseMoveEvent
方法,它將實際上處理鼠標移動。
在我的主窗口的構造方法(也做了.ui-based
建設)我會說,像
dummy_widget_ = new DummyWidget(...);
// `dummy_widget_` is a private `DummyWidget*` member of the main window
,然後可能會某處重新定位。
就是這樣 - 現在當我的主窗口被創建時,會添加一個虛擬小部件,並且該小部件中的每個鼠標移動都會被處理(因爲我們提供了自定義實現)。
另一個的時刻,其與僅鼠標事件:http://doc.qt.nokia.com/4.7/qwidget.html#mouseTracking-prop
簡單地使用mapFromGlobal(事件 - > globalPos()),並將它與事件 - 比較> POS()值 – 2010-11-15 09:23:47