QT的QStateMachine类的使用
詳細說明
QStateMachine類提供了分層的有限狀態機。
QStateMachine基于狀態圖的概念和表示法。 QStateMachine是狀態機框架的一部分。
狀態機管理一組狀態(從QAbstractState繼承的類)和這些狀態之間的轉換(QAbstractTransition的后代)。這些狀態和轉換定義狀態圖。一旦建立了狀態圖,狀態機就可以執行它。 QStateMachine的執行算法基于狀態圖XML(SCXML)算法。該框架的概述給出了幾個狀態圖以及用于構建它們的代碼。
使用addState()函數可將頂級狀態添加到狀態機。使用removeState()函數刪除狀態。不建議在機器運行時刪除狀態。
必須先設置初始狀態,然后才能啟動機器。初始狀態是機器啟動時進入的狀態。然后,您可以啟動()狀態機。進入初始狀態時,將發出starts()信號。
機器是事件驅動的,并保留自己的事件循環。通過postEvent()將事件發布到計算機。請注意,這意味著它異步執行,并且沒有運行的事件循環就不會繼續執行。由于Qt的轉換(例如QEventTransition及其子類)可以處理此事件,因此通常不必直接將事件發布到計算機上。但是對于事件觸發的自定義轉換,postEvent()很有用。
狀態機處理事件并進行轉換,直到進入頂級最終狀態為止。然后狀態機發出finish()信號。您還可以顯式地停止()狀態機。在這種情況下將發出Stopped()信號。
以下代碼片段顯示了一種狀態機,該狀態機將在單擊按鈕時完成:
總結
以上是生活随笔為你收集整理的QT的QStateMachine类的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何注销基金交易账户 需要满足一定条件
- 下一篇: QT的QStatusBar类的使用