【问题标题】:Binding loop detected for property "width" of Image为图像的属性“宽度”检测到绑定循环
【发布时间】:2016-01-19 06:54:26
【问题描述】:

假设我有一个这样的组件:

Rectangle {
    id: rec1

    Rectangle {
        id: rec
        x:10;y:100; height:100;
        color: 'red'
        anchors {
            left: parent.left
            right: parent.right
        }
        Loader {
            id:loader
            width: parent.width
            sourceComponent: comp
        }

    }

    Component {
        id: comp
        Rectangle {
            anchors {
                left: parent.left
                leftMargin: 1           // this line
                right: parent.right
            }
            height:img.height
            Image {
                id: img
                source: '/myimage.png'
                width: parent.width
                fillMode: Image.PreserveAspectFit
            }
        }
    }
}

控制台报告:

QML 图像:检测到属性“宽度”的绑定循环

但如果我将 comp leftMargin 更改为 leftMargin: 0(不是 1),一切正常

这是一个错误还是我缺少某些功能?

【问题讨论】:

    标签: qt qml qt5 qtquick2


    【解决方案1】:

    在我看来你打错了:

    width:100; height:100;
    ...
    anchors {
        left: parent.left
        right: parent.right
    }
    

    通过这样做你:

    1. 明确设置矩形width(到100)。
    2. 明确地将左侧锚定到父母左侧(如果这只是一个锚定操作 - 没关系)然后 - 将右侧锚定到父母的右侧(所以你隐式定义矩形的width)。

    这是矛盾的。尝试解决它(例如,通过删除右锚)并重新运行您的应用程序。

    【讨论】:

    • 谢谢,你说得对,是我的错。现在我做了一个非常相似的例子来说明这个问题,关于这个问题有什么想法吗?
    • 我在 Linux 上使用 Qt 5.5.1 GCC 64x 和 QtQuick 2.3,无法重现您提到的问题。
    • 我在 Mac OS X (10.11.2) 上使用 Qt 5.5.1 Clang 6.0 和 QtQuick 2.5。结果似乎是正确的,但是控制台报告了这个错误信息。还是谢谢
    猜你喜欢
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    相关资源
    最近更新 更多