10

好的,使用 Qt,我想知道如何在任何时间点检测鼠标的当前状态 -没有MouseEvent。

使用 QCursor::pos() 可以获得它的位置,但是有没有办法确定按钮的当前状态?

基本上,我希望在计时器关闭时验证鼠标的状态,因此它不会与任何特定的 MouseEvent 相关,因此没有可查询的 MouseEvent。我需要知道如何在没有 MouseEvent 的情况下查询鼠标的状态——尤其是按钮的状态。

哦,我正在使用 Qt 3,所以如果在 Qt 4 中添加了这样的功能但在 Qt 3 中没有,它对我没有多大帮助(尽管它仍然很高兴知道)。

4

3 回答 3

17

Qt::MouseButtons QApplication::mouseButtons () [静态] :

返回鼠标按钮的当前状态。当前状态同步更新,因为事件队列中的事件会自发地改变鼠标状态(QEvent::MousePressQEvent::MouseRelease事件)。

应该注意的是,这可能不会反映调用时输入设备上的实际按钮,而是上述事件之一中最后报告的鼠标按钮。如果没有鼠标按钮被按住,Qt::NoButton则返回。

编辑:嗯,我刚刚注意到您询问了 Qt3.3。恐怕这个答案适用于Qt4。

于 2009-08-26T19:11:28.703 回答
1

不使用 MouseEvent 是硬性要求吗?或者你可以间接使用 MouseEvents 吗?

如果您为每个按钮创建一个布尔变量并使用鼠标按下/释放事件对其进行更新,那么您可以在计时器关闭时查看相关布尔值的值。

于 2009-08-22T01:43:49.363 回答
1

Qt5 (5.3.2) 的更新:

if (QGuiApplication::mouseButtons() == Qt::LeftButton) { ... }
  • 我正在使用 QApplication,但那里没有mouseButtons()功能。您将需要包括<QGuiApplication>
于 2021-01-02T20:19:02.930 回答