2009-08-21 68 views
7

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

使用QCursor :: pos(),你可以得到它的位置,但是有没有一种方法来确定按钮的当前状态?

基本上,我正在寻找验证计时器熄灭时鼠标的状态,所以它不会与任何特定的MouseEvent相关,因此没有MouseEvent进行查询。我需要知道如何在没有MouseEvent的情况下查询鼠标的状态 - 尤其是按钮的状态。

呵呵,我使用的是Qt 3,所以如果在Qt 4中添加了这样一个函数,但不在Qt 3中,它对我来说帮不了多少忙(尽管知道这些函数还是很好的)。

回答

1

难道你不使用MouseEvent?或者你可以间接使用MouseEvents吗?

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

+0

它不能与事件相关。我的意思是,如果有一个函数通过返回一个MouseEvent给你当前的鼠标状态,那很好,但我不能处理一个事件。我必须能够简单地查询鼠标的当前状态,而不必担心事件是否已经触发。 – 2009-08-24 16:00:00

+0

为什么你不能访问这些事件?你担心表演吗?由于事件,您的代码如何在GUI中运行而不发送? – Bill 2009-08-26 20:15:24

+0

这是一个复杂的系统,绝对没有错误,我不能保证我不会错过任何事件。所以,当鼠标处于正确状态时,应该设置定时器_should_才能关闭,我必须能够在鼠标关闭时检查鼠标的状态,以确保没有任何事件通过裂缝落下。 – 2009-08-27 16:19:37

14

Qt::MouseButtons QApplication::mouseButtons() [static]

返回鼠标上的按钮的当前状态。当事件队列清空将自发改变鼠标状态(QEvent::MousePressQEvent::MouseRelease事件)的事件 时,当前 状态被同步更新。

应该指出,这可能并不反映在调用时输入设备上保存的实际按钮,而是上述事件中最后报告的最后一次报告的鼠标按钮 。如果没有鼠标按钮 被保留Qt::NoButton被返回。

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

+0

好吧,就像我在问题中所说的那样,知道是否有办法即使没有在qt3中,也可以在qt4中执行此操作。如果没有其他的东西,我可以在未来版本的应用程序中使用它(并且知道更多关于这种事情总是很好的)。然而,目前的版本是在qt3中,所以除非在qt3中有办法做到这一点,那么我目前运气不佳。但是如果是qt4而不是qt3,那只能说明奇趣科技继续改进qt并使其成为更好的工具包。 – 2009-08-27 16:24:05

相关问题