Qt Quick 中的重要概念 - 定位本节链接

定位概念的概述

在 QML 中的视觉项目可以用多种方式定位。最重要的定位相关概念是锚点,这是一种相对定位方式,项目可以在某些边界处相互锚定(或连接)。

手动定位本节链接

项目可以手动定位。如果用户界面将是静态的,手动定位提供了最有效的定位方式。

在任何用户界面中,视觉类型在时间中的任何一个瞬间都在屏幕坐标系统中的特定位置存在。虽然流畅动画和动态用户界面是 Qt Quick 的主要关注点,但静态定位的用户界面仍然是一种可行的选择。此外,如果这些类型的位置不发生变化,通常直接指定位置比使用前一节中记录的更动态的定位方法要高效得多。

在 Qt Quick 中,每个视觉对象都位于 Qt Quick 视觉画布提供的 坐标系统 中进行定位。正如该文档所述,视觉对象的 x 和 y 坐标相对于其视觉父级的坐标,而左上角坐标为 (0, 0)。

因此,以下示例将显示两个通过手动定位的矩形

示例代码

生成的布局

../_images/manual-layout.png

通过绑定进行定位本节链接

项目也可以通过将绑定表达式分配给与其在视觉画布中位置相关的属性来定位。这种类型的定位是最动态的,然而,使用这种定位方式也会有一定性能损耗。

视觉对象的定位和尺寸也可以通过属性绑定来设置。这有一个优点,即是当绑定的依赖项发生变化时,值会自动更新。例如,一个矩形的宽度可能取决于相邻矩形的宽度。

虽然绑定提供了一种非常灵活直观的创建动态布局的方法,但应该注意到,它们有一定的性能损耗,并在可能的情况下,选择原始锚点布局。

锚点本节链接

锚点允许项目通过将项目的一个或多个锚点(边界)附加到另一个项目的锚点上,放置在另一个项目的旁边或内部。即使其中一辆车的尺寸或位置发生变化,这些锚点也会保持,从而允许创建高度动态的用户界面。

可以将视觉对象视为具有各种锚点(或更准确地说,锚线)。其他项目可以锚定到这些点,这意味着当任何对象更改时,锚定到它的其他对象将自动调整以保持锚定。

Qt Quick 提供了锚点作为顶级概念。有关锚点定位的详细信息,请参阅 使用锚点定位 的文档。

请注意,如果无瑕疵,基于锚点的布局通常比基于绑定的布局性能更好。一个“无瑕疵”的锚点布局是指仅使用锚点(带对象嵌套)来确定定位的布局,而一个“污染”的锚点布局是指同时使用锚点和绑定(无论是位置相关的 [x,y] 属性还是尺寸相关的 [width,height] 属性)来确定位置的布局。

定位器#

Qt Quick 还提供了一些内置的定位器项。对于许多用例,最好使用的定位器是一个简单的网格、行或列,Qt Quick 提供了以最高效的方式定位这些布局中的子项的项。有关使用预定义定位器的更多信息,请参阅有关 项定位器类型 的文档。

布局#

从 Qt 5.1 版本开始,模块 Qt Quick Layouts 也可以用于在用户界面中安排 Qt Quick 项。与定位器不同,Qt Quick Layouts 中的类型可在声明性接口中管理项的位置和大小。它们非常适合可调整大小的用户界面。

从右到左支持#

语言的书写形式的方向性经常对用户界面视觉布局应该如何定位有很大的影响。Qt Quick 通过预定义的布局以及从右到左的文本布局支持类型的从右到左定位。

请参阅有关 Qt Quick 中从右到左支持 的文档,以获取此主题的详细信息。