如何测试项目是否锚定?

时间:2018-08-03 13:11:17

标签: qml

测试项目是否已锚定的正确方法是什么?例如,以左侧为例,我尝试过:

property bool isAnchored: parent.anchors.left != undefined 

但这似乎不起作用?我也尝试过:

    property bool isAnchored: !!parent.anchors.left 

似乎也不起作用,我也尝试过:

    property bool isAnchored: parent.anchors.left ? true : false 

还有其他想法吗?必须有一种方法来检查某项是否已锚定,但我找不到它?

1 个答案:

答案 0 :(得分:1)

不幸的是,我看不到使用提供的/公开的属性来完成此操作的任何方法。唯一确定有效锚点的是Anchors flag type中定义的QQuickAnchorLine::anchorLine member,但是在任何地方(例如{{1} }始终为anchors.left.anchorLine)。或在公共C ++ API中解决此问题。如您所见,附加到每个对象的实际undefined始终是有效/非空。

我认为您将需要在设置或删除代码中锚点的任何例程中实现自己的标志(我认为必须在某处确定)。也就是说,只要锚点发生更改,就设置一个自定义属性值。还有可以QQuickAnchorLine编辑的锚改变信号(leftChanged()等)。

或者,您可以在C ++中重新实现自己附加的Anchors对象,并跟踪所需的任何属性(与上述建议基本相同,但集中在C ++类中)。 Here is a good example(我认为不是我的代码)使用自定义附加对象定义自己的锚行。有了这样的东西,跟踪/查询固定在什么上的内容将非常容易。