QML State states 状态机
QML State
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.5
import QtQuick.Layouts 1.15
import "./common.js" as FunJs
Window
{
id: window
width: 600
height: 480
visible: true
title: "QML Demo"
Item
{
id: rootItem
anchors.fill: parent
property var colorBuilder: FunJs.getColorBudider(Qt.rgba)
property var pages:["Home", "Help", "About"]
Rectangle
{
id:rect
implicitHeight: 200
implicitWidth: 200
color: rootItem.colorBuilder()
states:
State
{
name: "rectColor"
PropertyChanges
{
target: rect
color: rootItem.colorBuilder()
}
}
MouseArea
{
anchors.fill: parent
onClicked:
{
rect.state = rect.state === "rectColor" ? "" : "rectColor"
}
}
}
}
}
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.5
import QtQuick.Layouts 1.15
import "./common.js" as FunJs
Window
{
id: window
width: 600
height: 480
visible: true
title: "QML Demo"
Item
{
id: rootItem
anchors.fill: parent
property var colorBuilder: FunJs.getColorBudider(Qt.rgba)
property var pages:["Home", "Help", "About"]
Rectangle
{
id: rect
implicitHeight: 200
implicitWidth: 200
color: "pink"
states:
State
{
when: rectMouse.pressed
name: "rectColor"
PropertyChanges
{
target: rect
color: rootItem.colorBuilder()
}
}
MouseArea
{
id: rectMouse
anchors.fill: parent
}
}
}
}
states 状态机
import QtQuick 2.14
import QtQuick.Window 2.14
import QtQuick.Controls 2.5
import QtQuick.Layouts 1.15
import "./common.js" as FunJs
Window
{
id: window
width: 600
height: 480
visible: true
title: "QML Demo"
Item
{
id: rootItem
anchors.fill: parent
property var colorBuilder: FunJs.getColorBudider(Qt.rgba)
property var pages:["Home", "Help", "About"]
SwipeView
{
id:view
anchors.top: parent.top
anchors.right: parent.right
anchors.left: parent.left
anchors.bottom: btn.top
Repeater
{
model: 3
Rectangle
{
color: rootItem.colorBuilder()
}
}
}
PageIndicator
{
anchors.bottom: view.bottom
anchors.horizontalCenter: view.horizontalCenter
count: view.count
currentIndex: view.currentIndex
}
Button
{
id:btn
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
text: "btn state"
states:
[
State
{
when: view.currentIndex === 0
PropertyChanges
{
target: btn
text: "Home"
onClicked:
{
console.log("Home State")
}
}
},
State
{
when: view.currentIndex === 1
PropertyChanges
{
target: btn
text: "Help"
onClicked:
{
console.log("Help State")
}
}
},
State
{
when: view.currentIndex === 2
PropertyChanges
{
target: btn
text: "About"
onClicked:
{
console.log("About State")
}
}
}
]
}
}
}