c ++ Qt,等待第二次点击

时间:2014-04-20 12:31:54

标签: c++ qt

我正在使用Qt创建器在c ++中制作一个简单的绘图程序。我有一个mouseevent,它应该从点击鼠标点的位置获得最近点(点)的坐标,并将它们放到行起点坐标。多数民众赞成。但是现在该事件应该等待第二次鼠标点击以再次获得最近的点coordninates并将它们放到行的终点。但它不会等待第二个输入并为行终点设置相同的第一个点。

如何让mouseevent接受两次点击输入,而不是马上做任何事情?它甚至可能吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

你不能让一个事件需要两次点击(当然,不包括双击事件)。但是,您可以在应用程序中建立一个状态,第一次单击开始状态,第二次单击完成状态。伪代码来管理这个:

// in your constructor:
StartingClickPoint = INVALID; // indicate that we have not entered our special state


// in your mouse event handler:
if (StartingClickPoint == INVALID) {
    // we're only now starting this state; we don't have enough information to complete it
    StartingClickPoint = CurrentClickPoint;
    return;
}
else {
    // complete the state handling and arm for the next pair of clicks
    EndingClickPoint = CurrentClickPoint;
    DoSomethingWithTheClickPoints();
    StartingClickPoint = INVALID; // reset for the next pair of clicks
}