QML程式架構設計(二)狀態機應用

2021-08-04 22:00:34 字數 1399 閱讀 3599

狀態機剛使用,不太熟,如有錯誤,歡迎指出。

在qml中的介面程式中,介面切換有的比較複雜,使用狀態機則會清晰一點。在使用過程中,發現狀態機的使用有講究。

狀態機使用1:

對於同乙個物件,要使用狀態機改變他的狀態,,需要放在該物件的內部,然後通過狀態的切換,就可以改變器任意的屬性,此時,狀態的name是有用的,不同的name對應不同的狀態。

import qtquick 2.7

import qtquick.controls 2.0

import qtquick.layouts 1.0

rectangle

// visible: j

visible: true

states: [

state

// when:

// statechangescript

// }

},state

propertychanges

// statechangescript

// }}]

}// rectangle

//

// visible: k

// }

mousearea

else

console.log(i%2)}}

}

狀態機使用2:

如果要改變多個物件的狀態,或者說多個物件之間進行狀態的切換,則需要將state放在最外層,此時,不能使用name來進行狀態切換,而要使用when的滿足條件來進行觸發;不可以使用properchange來改變不同的物件的屬性,而要使用執行指令碼statechangescript來進行狀態的屬性切換。

如果指令碼邏輯較複雜,還可以封函式進行呼叫。

import qtquick 2.7

import qtquick.controls 2.0

import qtquick.layouts 1.0

rectangle

statechangescript}},

state

statechangescript}}

]rectangle

visible: j

}rectangle

visible: k

}mousearea

else

console.log(i%2)}}

}

這樣,方法二就可以應用在qml程式架構設計(一)中的第二中使用狀態機的方法中了。但是這裡還會存在乙個隱患,當介面切套複雜,深層的子介面的id是很不好獲取的。

設計模式的C語言應用 狀態機模式 第二章

狀態 state 模式是c語言實現相當常用的模式,也是能夠在c語言 現出來的最顯性的模式之一。在物件導向裡,狀態模式允許乙個物件在內部狀態改變的時候改變其行為。狀態用法很多,最常見的是狀態機,分為無限狀態機和有限狀態機。有限狀態機 finite state machine,fsm,輸入集合和輸出集合...

Unity 火炬之光 筆記(二)狀態機的基本設計

這裡狀態機有兩個部分組成,乙個是管理各種狀態的狀態機,乙個是各種狀態本身。狀態機對外有兩個介面,乙個是新增狀態,乙個是切換狀態。我們給乙個物件用狀態機管理,首先就給它的狀態機新增各種狀態,然後啟動狀態機就ok了,裡面不同的狀態都會在各種時候自己切換到別的狀態。狀態本身主要有四個功能,首先儲存自己收哪...

將Web應用程式設定成有限狀態機

雖然web應用程式是目前最熱門的主題,但它們的程式設計模型有別於傳統的 非web的應用程式,這為開發者帶來了新的挑戰。傳統應用程式具有相當確定的控制流,但web應用程式要針對不由自己控制的外部事件 http請求 來採取行動和生成輸出。我們無法強迫這些事件按特定順序發生,或者強迫在特定情況下發生,所以...