qt c++;不同顺序的多个鼠标事件 现在我必须在C++中编写一些鼠标事件。我知道有用于按下、释放、移动和双击的鼠标事件

qt c++;不同顺序的多个鼠标事件 现在我必须在C++中编写一些鼠标事件。我知道有用于按下、释放、移动和双击的鼠标事件,c++,qt,mouseevent,C++,Qt,Mouseevent,我想知道的是,当事件以不同的顺序使用时,如何区分它们。让我们假设我这样做: 鼠标移动->鼠标单击->鼠标移动->鼠标释放 如何区分第一个鼠标移动事件和第二个鼠标移动事件 我通过在运行鼠标单击事件时使用设置为true的标志“鼠标单击标志”解决了这个问题。在mouse move例程中,我有一个if语句检查(mouse click flag==true),它决定是否运行mouse click事件例程。这是可行的,但看起来很复杂 如何解决这个问题? 多谢各位 事实上,你所做的是正确的。您还希望在鼠标释放

我想知道的是,当事件以不同的顺序使用时,如何区分它们。让我们假设我这样做:

鼠标移动->鼠标单击->鼠标移动->鼠标释放

如何区分第一个鼠标移动事件和第二个鼠标移动事件

我通过在运行鼠标单击事件时使用设置为true的标志“鼠标单击标志”解决了这个问题。在mouse move例程中,我有一个if语句检查(mouse click flag==true),它决定是否运行mouse click事件例程。这是可行的,但看起来很复杂

如何解决这个问题?

多谢各位


事实上,你所做的是正确的。您还希望在鼠标释放事件中将鼠标单击标志设置为false,但您可能已经发现了这一点,只是没有说出来。您提到在第一步运行鼠标单击事件例程。你为什么不在mousePressEvent例程中运行它?有时候有很好的理由…只是确认这就是你需要的


如果您只关心用户按下鼠标时的鼠标移动事件,那么正如thuga所说,通过在小部件上调用“setMouseTracking”来关闭鼠标跟踪,并将其设置为false。然后,您将只能获得单击-移动-释放模式。

如果关闭鼠标跟踪,则只有在鼠标按下时才能获得移动事件。除非你需要知道鼠标何时移动,即使鼠标按钮没有按下?你也可以。