我正在构建一个程序,其流程主要是顺序的,但也有一些替代路径。我认为状态机可能是实现这一点最简单的方法,因为Qt提供了这样一个类:QStateMachine(还请参见API)。
然而,我似乎有相当多的状态(20+)。此外,我有许多不同的转换事件(比如说按钮1-10)。例如,按下x按钮会导致从状态13到14的转换。
进入或离开每个状态应该能够执行具有参数的特定函数,虽然每个状态都发出这样的信号,但无法传递参数,因此需要大量的无参数函数。
重新实现
使用
然而,我似乎有相当多的状态(20+)。此外,我有许多不同的转换事件(比如说按钮1-10)。例如,按下x按钮会导致从状态13到14的转换。
进入或离开每个状态应该能够执行具有参数的特定函数,虽然每个状态都发出这样的信号,但无法传递参数,因此需要大量的无参数函数。
重新实现
QAbstractState
对于这个问题似乎也很繁琐,除非它具有类似于assignProperty()
的方法,允许在“状态进入”时设置QObject
属性。使用
QSignalMapper
以及每个状态的转换信号的多个信号槽连接来处理多个操作是否是合适的方法?