c++;Qt,等待第二次单击 < >我用QT创建者制作了一个简单的C++绘图程序。我有一个mouseevent,它应该得到鼠标点击点的最近点(dot)的坐标,并将它们放在直线起点坐标上。好了。但现在,事件应该等待第二次鼠标单击,以再次获得最近的点坐标,并将它们放置到线的端点。但是它不等待第二个输入,而是将相同的第一个点也放在直线端点上

c++;Qt,等待第二次单击 < >我用QT创建者制作了一个简单的C++绘图程序。我有一个mouseevent,它应该得到鼠标点击点的最近点(dot)的坐标,并将它们放在直线起点坐标上。好了。但现在,事件应该等待第二次鼠标单击,以再次获得最近的点坐标,并将它们放置到线的端点。但是它不等待第二个输入,而是将相同的第一个点也放在直线端点上,c++,qt,C++,Qt,如何使MouseeEvent接受两次单击输入,而不是立即完成所有操作?有可能吗?提前感谢。您不能让一个事件需要两次单击(当然,双击事件除外)。但是,您可以在应用程序中建立一个状态,第一次单击启动状态,第二次单击完成状态。管理此项的伪代码: // in your constructor: StartingClickPoint = INVALID; // indicate that we have not entered our special state // in your mouse ev

如何使MouseeEvent接受两次单击输入,而不是立即完成所有操作?有可能吗?提前感谢。

您不能让一个事件需要两次单击(当然,双击事件除外)。但是,您可以在应用程序中建立一个状态,第一次单击启动状态,第二次单击完成状态。管理此项的伪代码:

// 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
}

“摩押”你为什么删除你的答案。这是正确的。假设你的意思是对我来说,我在尝试发布时出现了一些站点错误。我想现在已经解决了,重新发布了。