Qt qml 之 信号与参数值传递
前言
qml 中信号如何使用,怎么获取使用信号参数
一、怎样定义一个信号?
定义
signal checked(bool checkValue)
发送
parent.checked(__checked)
//CheckBox.qml
import QtQuick 2.0
Item {
//define signal
signal checked(bool checkValue)
//--> hide
width: textItem.width + checkImage.width
height: checkImage.height
Image {
id: checkImage
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
source: toggleArea.__checked ? "checked.png" : "unchecked.png"
}
Text{
id: textItem
anchors.left: checkImage.right
anchors.leftMargin: 4
anchors.verticalCenter: checkImage.verticalCenter
text: "Option"
font.pixelSize: checkImage.height - 4
}
//<-- hide
MouseArea{
id: toggleArea
anchors.fill: parent
//define internal state property
property bool __checked: false
onClicked: {
__checked = !__checked;
parent.checked(__checked); //emit signal with new value
}
}
}
二、怎么样连接这个信号
连接
onChecked: checkValue ? parent.color = “red” : parent.color = “lightblue”
这里的 checkValue 即是在信号定义时候所给的参数值,对应在信号发送时候的传入(__checked)
//main.qml
import QtQuick 2.0
Item{
width: 500
height: 500
Rectangle{
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.verticalCenter
color: "lightblue"
CheckBox{
anchors.centerIn: parent
onChecked: checkValue ? parent.color = "red" : parent.color = "lightblue"
}
}
}
总结
今天是qml信号的使用方法