Qt Quick中的重要概念 - 定位¶
定位概念概述
QML中的可视项目可以通过多种方式进行定位。最重要的与定位相关的概念是锚定,这是一种相对定位形式,其中项目可以在某些边界上相互锚定(或附加)。其他定位概念包括绝对定位、使用坐标绑定进行定位、定位器和布局。
手动定位¶
项目可以手动定位。如果用户界面是静态的,手动定位提供了最有效的定位形式。
在任何用户界面中,视觉类型在任何时刻都存在于屏幕坐标的特定位置。虽然流畅的动画和动态用户界面是Qt Quick的主要焦点,但静态定位的用户界面仍然是一个可行的选择。更重要的是,如果这些类型的位置不发生变化,手动指定位置通常比使用后续章节中记录的更动态的定位方法更高效。
在Qt Quick中,每个可视对象都位于Qt Quick可视画布提供的坐标系内。如该文档所述,可视对象的x和y坐标是相对于其可视父对象的坐标,左上角的坐标为(0, 0)。
因此,以下示例将显示手动定位的两个矩形:
示例代码
结果布局
![]()
使用绑定进行定位¶
项目也可以通过将绑定表达式分配给与其在视觉画布中的位置相关的属性来进行定位。这种类型的定位是最具动态性的,然而,以这种方式定位项目会带来一些性能成本。
视觉对象的位置和尺寸也可以通过属性绑定来设置。这样做的好处是,当绑定的依赖关系发生变化时,这些值会自动更新。例如,一个矩形的宽度可能取决于它旁边矩形的宽度。
虽然绑定提供了一种非常灵活且直观的方式来创建动态布局,但需要注意的是,它们会带来一些性能开销,因此在可能的情况下,应优先使用原始的Anchor布局。
锚点¶
锚点允许通过将一个或多个项目的锚点(边界)附加到另一个项目的锚点,将项目放置在其旁边或内部。即使其中一个项目的尺寸或位置发生变化,这些锚点也会保持不变,从而实现高度动态的用户界面。
一个视觉对象可以被认为具有各种锚点(或更准确地说,锚线)。其他项目可以锚定到这些点,这意味着当任何对象发生变化时,锚定到它的其他对象将自动调整以保持锚定。
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中的从右到左支持的文档以获取该主题的深入信息。