SignalTransition 샘플
SignalTransition 샘플 코드
테스트용 QML
import QtQuick 2.9
import QtQuick.Window 2.3
import QtQuick.Controls 2.2
import QtQml.StateMachine 1.0 as DSM
import QtMultimedia 5.9
Window {
id: window
visible: true
width: 640
height: 480
// StateMachine作成
DSM.StateMachine {
id: stateMachine
initialState: textState
running: true
// 初期状態
DSM.State {
id: textState
// buttonクリック時にfinalState状態へ切り替え
// ただし、checkBoxGuardがチェックされている場合は状態の変更を行わない
DSM.SignalTransition {
targetState: finalState
signal: button.clicked
guard: !checkBoxGuard.checked
}
}
// 最終状態
DSM.FinalState {
id: finalState
}
// 最終状態になった時のハンドラ
onFinished: {
text1.text = "Finished!"
color = "#ff0000"
}
}
Row {
id: row
spacing: 2
// 状態変更ボタン
Button {
id: button
anchors.verticalCenter: parent.verticalCenter
text: "Click Me!"
onClicked: {
if (checkBoxGuard.checked == false) {
enabled = false
checkBoxGuard.enabled = false
okSound.play()
} else {
ngSound.play()
text1.text = "Guard!"
}
}
Audio { id: okSound; source: "Sounds/btn01.mp3" }
Audio { id: ngSound; source: "Sounds/btn02.mp3" }
}
// ガード有効チェックボックス
CheckBox {
id: checkBoxGuard
checkable: true
text: qsTr("Guard")
onClicked: checkSound.play()
Audio { id: checkSound; source: "Sounds/btn03.mp3" }
}
}
// 状態表示テキスト
Text {
id: text1
text: qsTr("Inital State")
anchors.top: row.bottom
anchors.left: parent.left
}
}
실행 결과
htps: //같다. 베 / 조 2rc9 엔 4
※Linux Mint 18.2 & Qt 5.9.1 사용
Reference
이 문제에 관하여(SignalTransition 샘플), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Taro3/items/e543efa5f64b5c9e6229
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import QtQuick 2.9
import QtQuick.Window 2.3
import QtQuick.Controls 2.2
import QtQml.StateMachine 1.0 as DSM
import QtMultimedia 5.9
Window {
id: window
visible: true
width: 640
height: 480
// StateMachine作成
DSM.StateMachine {
id: stateMachine
initialState: textState
running: true
// 初期状態
DSM.State {
id: textState
// buttonクリック時にfinalState状態へ切り替え
// ただし、checkBoxGuardがチェックされている場合は状態の変更を行わない
DSM.SignalTransition {
targetState: finalState
signal: button.clicked
guard: !checkBoxGuard.checked
}
}
// 最終状態
DSM.FinalState {
id: finalState
}
// 最終状態になった時のハンドラ
onFinished: {
text1.text = "Finished!"
color = "#ff0000"
}
}
Row {
id: row
spacing: 2
// 状態変更ボタン
Button {
id: button
anchors.verticalCenter: parent.verticalCenter
text: "Click Me!"
onClicked: {
if (checkBoxGuard.checked == false) {
enabled = false
checkBoxGuard.enabled = false
okSound.play()
} else {
ngSound.play()
text1.text = "Guard!"
}
}
Audio { id: okSound; source: "Sounds/btn01.mp3" }
Audio { id: ngSound; source: "Sounds/btn02.mp3" }
}
// ガード有効チェックボックス
CheckBox {
id: checkBoxGuard
checkable: true
text: qsTr("Guard")
onClicked: checkSound.play()
Audio { id: checkSound; source: "Sounds/btn03.mp3" }
}
}
// 状態表示テキスト
Text {
id: text1
text: qsTr("Inital State")
anchors.top: row.bottom
anchors.left: parent.left
}
}
Reference
이 문제에 관하여(SignalTransition 샘플), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Taro3/items/e543efa5f64b5c9e6229텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)