Ich verwende Qkeyevent, um Schlüssel A- und B-Ereignis in QT zu definieren. Wenn ich A in die Tastatur drücke, mache ich den Prozess A(), der 1 Sekunde lang dauert. Wenn ich B in die Tastatur drücke, wird B() verarbeitet. Ich möchte einen globalen Wert aktualisieren, indem ich A() verarbeite und im Prozess B() einen Wert erhalte. Allerdings Prozess A() verbringen für 1 Sekunde. Wenn ich Taste B so schnell drücke, erhalte ich den falschen Wert.Wie ich warten muss, bis Prozess A() beendet wird, wenn ich B so schnell in QT drücke.Warten auf Schlüsselereignis, bis der Prozess in QT beendet wird
int g = 3;
A() {
...
//cost 1 second
g = 4;
}
B() {
cout << g;
}
Zuerst schiebe ich A. Dann B.If drücken i B in 1s afer drücken B drücken, wird i g erhalten = 3.
Danke dir deinen Kommentar.Ich schreibe keyPressEvent in den Hauptthread.Ist ich Thread verwenden müssen? –
@Moto Jack, das ist die Antwort, kein Kommentar :) Wenn sichergestellt wird, dass 'A()' beendet ist, wenn 'B()' aufgerufen wird, gibt es die Garantie, dass die Variable 'g' bereits geändert wurde. – WindyFields
Vielen Dank. Ich werde versuchen, Thread –