我目前正在将一个small application从PyGTK移植到PySide,它位于你的系统中,并定期检查服务器是否有更新。
当我最初写这篇文章时,我使用自定义状态模型来表示它的行为:
我发现Qt有QStateMachine,这对于这种类型的结构来说似乎很完美。但是,我无法将examples令人满意地应用于我的问题!
特别是:
任何指针都非常受欢迎!
答案 0 :(得分:4)
确定。 Pyside.QtCore.Signal
是信号&插槽导数。
关于你的问题
我说QStateMachine的上下文中QEvent
和Signal
没有区别(尽管QEvent
和信号与插槽完全不同概念)。根据您的需要,您可以使用QEvent
或Signal
触发转换。有关即用型过渡列表,请参阅QAbstactTransition
:
继承者:QSignalTransition,QEventTransition, QMouseEventTransition,QKeyEventTransition
再次根据应用程序内部发生的情况,您的错误可能来自QObject
,也可以发送(发布)自定义QEvent
。您需要实施自定义QEvent
和/或自定义QEventTransition
才能触发 事件的转换。
再次依赖:) Transition是胶水。它具有源和目标状态的知识。因此,我只在onTransition()
内放置预备代码,并在onEnter()
内设置初始化代码。我在onTransition()
中放置改变状态的代码似乎也是错误的,例如你已经展示过:
def onTransition(self, e):
x = e.arguments()[0]
fac = self.fact.fac
self.fact.fac = x * fac
self.fact.x = x - 1
但是你可以看到效果很好。
NB:如果您有iOS体验,则UIStoryboardSegue
类似于转换。主要用于在UIView
's即UI状态之间传递数据。