qml - 我如何测试一个项目是否被锚定?
问题描述
测试项目是否已锚定的正确方法是什么?比如取左边,我试过:
property bool isAnchored: parent.anchors.left != undefined
但这似乎不起作用?我也试过:
property bool isAnchored: !!parent.anchors.left
这似乎也不起作用,我也尝试过:
property bool isAnchored: parent.anchors.left ? true : false
还有其他想法吗?必须有一种方法来检查一个项目是否被锚定但我找不到它?
解决方案
不幸的是,我看不到任何使用提供/公开属性的方法。唯一确定有效锚点的是在member中定义的Anchors
标志类型,但它不会在任何地方暴露给 QML(例如is always )。或者在公共 C++ API 中。正如您所发现的,附加到每个对象的实际s 始终有效/非空。QQuickAnchorLine::anchorLine
anchors.left.anchorLine
undefined
QQuickAnchorLine
我认为您将需要在设置或删除代码中的锚点的任何例程中实现自己的标志(我认为必须在某处确定)。也就是说,每当锚点更改时,设置自定义属性值。还有可以编辑的锚点更改信号(leftChanged()
等)connect
。
或者,您可以在 C++ 中重新实现您自己附加的 Anchors 对象并跟踪您想要的任何属性(与上述建议基本相同,但集中在 C++ 类中)。 这是使用自定义附加对象定义自己的锚线的一个很好的例子(我认为,不是我的代码)。有了这样的东西,跟踪/查询什么锚定到什么就很容易了。
推荐阅读
- python - 如何从数据文件中导入一个 numpy 结构化数组
- reactjs - 如何将变量传递给道具中收到的组件?
- c++ - 安装程序在 ubuntu 上安装 qt 和 qt creator 时崩溃
- regex - 如何处理正则表达式中的冗余案例?
- html - 导航栏在屏幕上不是全宽?
- ada - Ada 保护的 Put 程序不在同一行写入
- python - 在 python 中为 API 请求 jsonify 选项卡
- computer-vision - 最快的边界框预测算法是什么?
- hyperledger-fabric - 如果多个交易在 Hyperledger Fabric 的同一区块中更改同一资产,区块会发生什么情况?
- javascript - 在javascript中将数组的字段与另一个长度不同的数组合并