为图像的属性“宽度”检测到绑定循环
Posted
技术标签:
【中文标题】为图像的属性“宽度”检测到绑定循环【英文标题】: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),一切正常
这是一个错误还是我缺少某些功能?
【问题讨论】:
【参考方案1】:在我看来你打错了:
width:100; height:100;
...
anchors
left: parent.left
right: parent.right
通过这样做你:
-
明确设置矩形
width
(到100
)。
明确地将左侧锚定到父母左侧(如果这只是一个锚定操作 - 没关系)然后 - 将右侧锚定到父母的右侧(所以你隐式定义矩形的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。结果似乎是正确的,但是控制台报告了这个错误信息。还是谢谢以上是关于为图像的属性“宽度”检测到绑定循环的主要内容,如果未能解决你的问题,请参考以下文章