私は主にシーケンシャルなフローだけでなく、いくつかの代替パスを持つプログラムを構築しています。Qt はQStateMachineなどのクラスを提供しているため、ステート マシンがこれを実装する最も簡単な方法であると考えました ( APIも参照)。
ただし、かなりの数の状態 (20 以上) があるようです。また、さまざまな遷移イベントがいくつかあります (ボタン 1 ~ 10 としましょう)。たとえば、ボタン x を押すと、状態 13 から 14 に遷移します。
各状態に入ったり出たりすると、パラメーターを使用して特定の関数を実行できる必要があります。各状態はそのようなシグナルを発しますが、パラメーターを渡すことはできないため、多数のパラメーターのない関数が必要になる可能性があります。
「state-entry」でプロパティを設定できるのQAbstractState
と同様のメソッドがない限り、この問題の再実装も面倒に思えます。assignProperty()
QObject
QSignalMapper
複数のアクションを処理するために、各状態の遷移信号に複数の Signal-Slot-Connections を使用するのは適切なアプローチですか?