Qt 5.7 QML为什么我的CheckBox属性绑定消失了?

Qt 5.7 QML为什么我的CheckBox属性绑定消失了?,第1张

概述我有一个简单的CheckBoxes列表,一个星期的每一天.它们取决于days的值,使用掩码的整数,每个CheckBox的1位. 使用“全部清除”按钮或“全部设置”按钮分配到天数时,它们会更新.但是,一旦点击了任何一个框,它们就不再响应依赖属性日的变化. 为什么是这样?他们在某种程度上变得没有约束力.如果是这样,我应该手动重新绑定它们,如果是这样,为什么? 这是代码, import QtQuick 我有一个简单的CheckBoxes列表,一个星期的每一天.它们取决于days的值,使用掩码的整数,每个CheckBox的1位.

使用“全部清除”按钮或“全部设置”按钮分配到天数时,它们会更新.但是,一旦点击了任何一个框,它们就不再响应依赖属性日的变化.

为什么是这样?他们在某种程度上变得没有约束力.如果是这样,我应该手动重新绑定它们,如果是这样,为什么?

这是代码,

import QtQuick 2.7import QtQuick.Controls 1.4import QtQuick.Layouts 1.3applicationwindow{    visible: true    wIDth: 800    height: 400    property int days: 0    ColumnLayout    {        Repeater        {            model: ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]            CheckBox            {                text: modelData                checked: (days & (1<<index)) != false                onClicked:                {                    if (checked) days |= (1<<index);                    else days &= ~(1<<index);                }            }        }        button         {            text: "clear all"            onClicked: days = 0        }        button         {            text: "set all"            onClicked: days = 127        }    }}

看起来像这样:

要重现此问题,请先单击“全部设置”和“全部清除”.然后点击一些复选框.然后再次单击“全部设置”和“全部清除”.您会看到您检查的方框不再受影响.

谢谢.

解决方法 当您手动单击该复选框时,checked属性将被重新分配为硬编码的true而不是原始表达式:(days&(1<<< index))!= false.同样,手动取消选中该框会强制将checked属性设置为硬编码的false. 修复是使用 Qt.binding简单地重新绑定已检查的属性.我已经清理了你的JavaScript并修复了你的错误.别客气.

Repeater    {        model: ["Mon","Sun"]        CheckBox        {            function isChecked() {                return ((days & (1 << index)) != 0);            }            text: modelData            checked: isChecked()            onClicked:            {                if (checked) {                    days |= (1<<index);                }                else {                    days &= ~(1<<index);                }                // Now rebind the item's checked property                checked = Qt.binding(isChecked);            }        }    }
总结

以上是内存溢出为你收集整理的Qt 5.7 QML为什么我的CheckBox属性绑定消失了?全部内容,希望文章能够帮你解决Qt 5.7 QML为什么我的CheckBox属性绑定消失了?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1076294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存