检测到Image的属性“width”的绑定循环

时间:2016-01-19 06:54:27

标签: qt qml qt5 qtquick2

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

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图像:检测到属性“width”的绑定循环

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

这是一个我错过的错误或某些功能吗?

1 个答案:

答案 0 :(得分:2)

在我看来,你写了一个错字:

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

通过这样做你:

  1. 明确设置矩形width(至100)。
  2. 明确地将左侧锚定到父母左侧(如果这只是一个锚定操作 - 它是好的)然后 - 将右侧锚定到父级右侧一边(所以你隐含地定义了你的矩形' s width)。
  3. 这是矛盾的。尝试解决它(例如,通过删除正确的锚定)并重新运行您的应用程序。