2010-11-14 90 views
2

这是我第一次尝试编写QT应用程序,我只是想了解它是如何工作的。我的目标是拥有一个400x400的小部件,它可以在鼠标悬停在鼠标上时知道鼠标的确切位置。例如,如果鼠标悬停在左上角,位置可能是10,10(或类似的东西)。如果鼠标在右下角,可能会说390,390。在QT中查找当前鼠标位置

最终,这些坐标将显示在主窗口的标签上,但这应该是微不足道的。我被困在实际的坐标获取中。有任何想法吗?

回答

5

对于您的小部件,您必须启用鼠标跟踪。

然后,您可以安装事件过滤器,注意鼠标事件并查找移动事件,也可以从QWidget继承并重写鼠标事件,查找鼠标移动事件。

http://doc.qt.io/qt-4.8/qwidget.html#mouseTracking-prop

http://doc.qt.io/qt-4.8/eventsandfilters.html

http://doc.qt.io/qt-4.8/qmouseevent.html

+0

感谢您的回复。我的工作大部分都是这样的......但我无法将MouseMoveEvent限制为只有Widget。无论光标位于窗口的哪个位置,它都会报告光标位置。对不起,这是一个不好的问题,但是我怎么知道事件是否来自我的Widget? – dfetter88 2010-11-14 19:07:26

+0

标记为正确。开创新的问题。 – dfetter88 2010-11-14 20:27:48

0

如果你遇上的时候,你并不需要实际的跟踪,只是位置目前的情况下,你可以使用QCursor::pos()