QML ChechBox属性绑定消失问题

问题描述: 我有一个简单的CheckBox-0....9列表,其中外面有一个全选CheckBox-A标志。设置property var之后,可以在点击CheckBox-A的时候全选/取消CheckBox-0..9这是没有问题的,但是点击选中/取消CheckBox-0..9任一之后,再次点击CheckBox-A,当前点击项会失效问题。

问题原因:当手动点击该复选框时,checked属性将被重新分配为硬编码的true,而不是自定义的porperty var了;同样手动取消checked属性被置为false;  修复该问题可以使用Qt.binding简单的重新绑定已检查的属性;

测试代码如下:

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls 1.4
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    default property bool myChecked: false;



    Text {
        id: text1
        x: 172
        y: 69
        width: 218
        height: 53
        text: qsTr("Text")
        font.bold: true
        verticalAlignment: Text.AlignVCenter
        horizontalAlignment: Text.AlignHCenter
        font.pixelSize: 12
    }

    CheckBox {
        id: id
        x: 246
        y: 161
        text: qsTr("Breakfast")

        function isChecked() {
            return myChecked;
        }

        checked: isChecked()

        onClicked: {
            myChecked = !myChecked;
            checked = Qt.binding(isChecked);
        }
        onCheckedChanged: {
            console.log("onCheckedChanged:"+checked);
        }

    }

    Button {
      id: button
      x: 246
      y: 250
      text: qsTr("Button")
      onClicked: {
          myChecked = !myChecked;
      }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值