【问题标题】:Updating property binding更新属性绑定
【发布时间】:2022-01-22 09:28:14
【问题描述】:

单击图像后,此代码会破坏绑定。之后 view.visible 逻辑(条件)将不起作用。它将继续保持真实。如何更改视图可见性?我认为向可见属性 visible: (model.count > 0) ? true : false 添加条件是有意义的,但我不确定如何编写三元运算符来实现这一点。

  Text {
        id: text1
        visible: !view.visible
        text: qsTr("No tests results")
    }

   Image {
        id: img
        visible: !view.visible
        MouseArea {
            anchors.fill: parent
            onClicked: {
                view.visible = true
                console.log("Clicked")
            }
        }
    }

    ListView {
            id: view
            anchors.fill: parent
            visible: (model !== null) && (model.count > 0) ? true : false
     }

【问题讨论】:

    标签: qt qml


    【解决方案1】:

    您可以简单地添加另一个属性并将其绑定到您的条件中。例如:

        Text {
            id: text1
            visible: !view.visible
            text: qsTr("No tests results")
        }
    
        Image {
            id: img
            visible: !view.visible
            property bool showStuff: true
            MouseArea {
                anchors.fill: parent
                onClicked: {
                    showStuff = false
                    console.log("Clicked")
                }
            }
        }
    
        ListView {
                id: view
                anchors.fill: parent
                visible: (model.count > 0 && img.showStuff)
         }
    

    将保持视图可见性的绑定。

    【讨论】:

    • 我想我想太多了。但让我澄清一下。当 (model !== null) && (model.count > 0) 结果为假时,列表视图可见性为假并且不显示。发生这种情况时,文本将与图像一起出现在屏幕上。当我单击图像时,我希望将列表视图的可见性更改为 true
    • 我认为 (model !== null) && (model.count > 0) || img.showStuff) 是可行的。如果模型等同于假,那么每当我点击图像时,它就会等同于真,然后它就会可见
    • 无论您如何摆脱对 view.visible 的条件绑定都取决于您的需求,我将把它留给您。我试图强调的是一种通过简单地翻转 onClicked 函数中的属性 showStuff 来维护该绑定的方法。在您的原始代码中,对 view.visible 的直接分配破坏了您声明的绑定。
    • 以下是 Qt 关于该主题的更多信息:doc.qt.io/qt-5/… - 特别相关,“具有绑定的属性会根据需要自动更新。但是,如果稍后从JavaScript 语句,绑定将被移除。”
    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2014-04-28
    • 2018-05-23
    相关资源
    最近更新 更多