如何等到keyevent直到QT完成流程

时间:2017-08-25 05:04:39

标签: c++ qt

我使用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.

1 个答案:

答案 0 :(得分:0)

我不知道您的实施细节,但我建议您查看this example。 除非您并行执行此操作(多线程),否则当事件“A被推送”到达时,您将在事件处理程序A()中调用操作keyPressEvent(QKeyEvent *event)。在这种情况下,在A()完成之前不应处理事件“B被推送”,因为操作A()将阻止事件循环(在您的情况下为1秒)。这样,当B()被调用时A()已经完成。