我使用Qkeyevent在QT中定义关键的A和B事件。当我在键盘上按A时,会处理A(),花费1秒钟。如果我在键盘上按B键,它将执行B()过程。我想通过处理A()并在进程B()中获取值来更新全局值。然而,过程A()花费1秒钟。如果我快速按下键B,我将得到错误的值。如果我在QT中如此快速地推动B,那么等待进程A()完成。
int g = 3;
A() {
...
//cost 1 second
g = 4;
}
B() {
cout << g;
}
首先,我按下A.然后按B.如果我在推动B的情况下将B推入1秒,我将得到g = 3.
答案 0 :(得分:0)
我不知道您的实施细节,但我建议您查看this example。
除非您并行执行此操作(多线程),否则当事件“A被推送”到达时,您将在事件处理程序A()
中调用操作keyPressEvent(QKeyEvent *event)
。在这种情况下,在A()
完成之前不应处理事件“B被推送”,因为操作A()将阻止事件循环(在您的情况下为1秒)。这样,当B()
被调用时A()
已经完成。