首页 > 解决方案 > 我如何测试一个项目是否被锚定?

问题描述

测试项目是否已锚定的正确方法是什么?比如取左边,我试过:

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

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

    property bool isAnchored: !!parent.anchors.left 

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

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

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

标签: qml

解决方案


不幸的是,我看不到任何使用提供/公开属性的方法。唯一确定有效锚点的是在member中定义的Anchors 标志类型,但它不会在任何地方暴露给 QML(例如is always )。或者在公共 C++ API 中。正如您所发现的,附加到每个对象的实际s 始终有效/非空。QQuickAnchorLine::anchorLine anchors.left.anchorLineundefinedQQuickAnchorLine

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

或者,您可以在 C++ 中重新实现您自己附加的 Anchors 对象并跟踪您想要的任何属性(与上述建议基本相同,但集中在 C++ 类中)。 这是使用自定义附加对象定义自己的锚线的一个很好的例子(我认为,不是我的代码)。有了这样的东西,跟踪/查询什么锚定到什么就很容易了。


推荐阅读