From 677e75fbe4be9d0d283be5859409a1f4f75e4444 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava Date: Thu, 6 Feb 2014 15:38:32 -0200 Subject: Process events just after starting the StateMachine This is needed because of a braindead issue on the Qt event loop: http://stackoverflow.com/questions/10059721/qt-qstatemachine-sync-problems-initial-state-not-set-on-started-signali For the "event 1" to be received, the machine must already be in a state that react to that signal. Even it was a queued connection, the slot would be queued but only after the signal was received, which it isn't since there is no connection yet at that point. To solve your problem, you can wait for the machine is in "state A" before emitting the signal: machine->start(); qApp->processEvents(); Signed-off-by: Tomaz Canabrava Signed-off-by: Dirk Hohndel --- qt-ui/profile/profilewidget2.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'qt-ui') diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp index 3f6be0389..4ebc8c3ee 100644 --- a/qt-ui/profile/profilewidget2.cpp +++ b/qt-ui/profile/profilewidget2.cpp @@ -292,6 +292,7 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : // Starting the transitions: stateMachine->start(); + qApp->processEvents(); scene()->installEventFilter(this); #ifndef QT_NO_DEBUG QTableView *diveDepthTableView = new QTableView(); -- cgit v1.2.3-70-g09d2