2

据我所知,QApplication::mouseButtons()即使按下按钮,也可能不会返回任何按钮。当您单击窗口的一侧以重新调整大小时,就会发生这种情况。它与文档一致,因为它mouseButtons()反映了流中的状态QEvent::mouseButtonPress等。但是,我只需要知道按钮是否被按住。有人知道是否可以通过 Qt API 实现吗?

4

1 回答 1

2

我认为这是不可能的。应用程序窗口外的鼠标事件不会传递给它的事件处理程序。拖动鼠标边框是此类事件之一,它由窗口系统处理。另一个例子是点击其他窗口。通常应用程序不知道用户对其他窗口做了什么。您需要安装系统范围的事件侦听器或使用本机 API 功能(例如Windows 上的GetAsyncKeyState)来确定。这种行为是不寻常的并且可能是危险的。在大多数情况下它是没有用的,而且似乎 Qt 没有这个能力。

于 2013-06-30T16:21:22.513 回答