У меня есть приложение, в котором пользовательский интерфейс управляется QStateMachine
, и некоторые из состояний можно описать как «не прерываемые»: как только они введены, пользователь должен взаимодействовать с пользовательским интерфейсом, и когда это будет сделано, тогда состояние можно выйти, но переход может зависеть от внешних событий.
Вот как я бы проиллюстрировал проблему:
A : initial state
B : "non interruptible" state
C, D, .. : other states
, а затем некоторые переходы:
event1 -> transition A_to_B
event2 -> transition B_to_C
event3 -> transition B_to_D
Теперь приложение запускает конечный автомат и вводит A:
1 - пользователь щелкает пользовательский интерфейс, который вызывает QSignalTransition
(событие1).
2 - в то время как в B удаленный сервер отправляет что-то приложению, это должно определить, будем ли мы вводить C (event2) или D (event3), но только после правильного выхода из B.
Проблема в том, что если мы определяем переход статически (до запуска конечного автомата), то при отправке события2 или события3 переход может привести к прерыванию B (например, пользователь не завершил выбор чего-либо, например)
Можно ли динамически изменить переход между двумя состояниями, как только мы узнаем, какое из них нам нужно?
Надеюсь, описание понятно.
Спасибо.