【问题标题】:How to anchor different things based on a property?如何根据属性锚定不同的东西?
【发布时间】:2019-03-20 05:09:06
【问题描述】:

我想要一个看起来像这样的 QML 布局:

+--------+            +--------+
|        |            |        |
| Text 1 |            | Text 3 |
+--------+            +--------+
----^^---------vv---------^^----
           +--------+
           | Text 2 |
           |        |
           +--------+

换句话说,替代对象(在这种情况下是 QML 项目)放置在某个中心线的上方或下方,并且它们包含的内容(QML 文本)这些对象需要转到对象的顶部或底部。

现在我知道我可以将特定的东西与项目上的锚点对齐:

anchors.bottom: isAbove ? parent.bottom : parent.top;

但无论是否需要它都会设置项目底部锚点(例如上面的第二个对象包含Text 2)。

我实际上正在寻找的是一种根据位置仅设置 一个 锚点的方法。在伪 QML 中,这将是:

isAbove? (anchors.bottom: parent.bottom) : (anchors.top: parent.top);

换句话说,我只想将项目底部锚定到父底部,如果它高于该线。否则我想将项目顶部锚定到父顶部。

我认为它可能类似于:

anchors.bottom: isAbove ? parent.bottom : nothing   ;
anchors.top:    isAbove ? nothing       : parent.top;

nothing 似乎不是一个锚定选项:-)

有没有办法用 QML 做到这一点?

【问题讨论】:

  • nothing更改为undefined
  • @eyllanesc:你在开玩笑吧,对吧,它那么简单吗? :-)
  • 成功了吗?我没有测试过
  • @eyllanesc:它确实有效。多谢了。如果您想将其发布为答案,我很乐意接受,希望未来的搜索者也能得到帮助。

标签: qt qml anchorpoint


【解决方案1】:

如果要删除锚点,您必须使用 undefined,如 docs 所示

【讨论】:

    【解决方案2】:

    您可以使用States 机制并使用AnchorChanges,一个很好的例子请参见https://doc.qt.io/archives/qt-4.8/qml-anchorchanges.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      相关资源
      最近更新 更多