如果我理解正确,那么您可以在这里执行检查,如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