QStateMachine с динамическими переходами - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть приложение, в котором пользовательский интерфейс управляется 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 (например, пользователь не завершил выбор чего-либо, например)

Можно ли динамически изменить переход между двумя состояниями, как только мы узнаем, какое из них нам нужно?

Надеюсь, описание понятно.

Спасибо.

...