QML (控件位置布局)之(Anchors)锚布局

简介: QML (控件位置布局)之(Anchors)锚布局

锚布局简介

使用QML布局时除了使用属性x,y,z方式来确定位置外,还可以使用anchors制定一个元素与其他元素的关系来确定元素在界面中的位置.
anchors 提供了一种方式,让你可以通过指定一个元素与其他元素的关系来确定元素在界面中的位置,即锚布局。 它是最灵活的一种 Qt
Quick 布局方式,使用它你可以随意摆布界面上那些可见元素.
使用QML布局时除了使用属性x,y,z方式来确定位置外,还可以使用anchors制定一个元素与其他元素的关系来确定元素在界面中的位置.


锚线

每个 Item 都有 7 条不可见的辅线:左(left)、水平中心(horizontalCenter)、
上(top)、下(bottom)、右(right)、垂直中心(verticalCenter)、基线(baseline)。
7条锚分别对应了Item项目中的anchors属性组的相关属性。因为Qt
Quick中所有可视项目都继承自Item,所以所有可视项目都可以使用锚进行布局。Qt Quick的锚定系统允许不同项目的锚线之间建立关系。

如上图:图中没有显示baseline,它是一条假想的线,文本坐落在这条线上。对于没有文本的项目它与top相同。


锚边距和位移

锚定系统也允许为一个项目的锚指定边距(margin)和偏移量(offset)。

边距指定了项目锚到外边界的空间量,而偏移则允许使用中心锚线进行定位。

所以,除了对齐锚线,还可以指定上(topMargin)、下(bottomMargin)、左(leftMargin)、右(rightMargin)四个边n独立指定锚边距,也可以使用anchor.margins来为所有的4个边指定相同的边距。
锚偏移可以使用 horizontalCenterOffset,verticalCenterOffset 和 baselineOffset来指定。

运行时改变锚

Qt Quick 提供了AnchorChanges类型,以便在运行时修改项目的锚,它需要在状态State中进行。AnchorChanges不能修改项目的边距,需要时可以使用PropertyChanges完成。
使用AnchorChanges改变项目的top和bottom锚,使用PropertyChanges修改top和bottom锚边距。

示例:

import QtQuick 2.2
Rectangle {
    id: window
    width: 120; height: 120
    color: "black"
    Rectangle { id: myRect; width: 50; height: 50; color: "red" }
    states: State {
        name: "reanchored"
        AnchorChanges {
            target: myRect
            anchors.top: window.top
            anchors.bottom: window.bottom
        }
        PropertyChanges {
            target: myRect
            anchors.topMargin: 10
            anchors.bottomMargin: 10
        }
    }
    MouseArea {
        anchors.fill: parent;
        onClicked: window.state = "reanchored"
    } } 


目录
相关文章
|
2月前
|
前端开发 容器
前端基础(十五)_多栏布局(两列自适应布局、圣杯布局---三列布局、双飞翼布局--三列布局、等高布局)
本文介绍了前端开发中的多种自适应布局技术,包括两列自适应布局、圣杯布局(三列布局)、双飞翼布局(三列布局)和等高布局。文章通过代码示例展示了如何使用HTML和CSS实现这些布局,以及如何通过flex布局简化实现过程。
72 2
|
5月前
|
前端开发
CSS实现将垂直滚动条放置在左侧方法
CSS实现将垂直滚动条放置在左侧方法
181 2
|
6月前
使用SDAutoLayout实现控件根据内容进行宽度自适应和高度自适应
使用SDAutoLayout实现控件根据内容进行宽度自适应和高度自适应
106 2
|
6月前
|
前端开发
两栏布局的实现
两栏布局的实现
|
6月前
|
前端开发 容器
如何实现一个两栏布局,右侧自适应?三栏布局中间自适应?
要实现一个两栏布局,右侧自适应的效果,可以使用 CSS 的 Flexbox 或 Grid 布局来实现。以下是使用 Flexbox 实现的示例:
76 1
|
6月前
[Qt5&布局] 控件自动填满所在布局框架
[Qt5&布局] 控件自动填满所在布局框架
103 0
[Qt5&布局] 控件自动填满所在布局框架
|
容器
13EasyUI 布局- 为网页创建边框布局
13EasyUI 布局- 为网页创建边框布局
37 0
|
UED 容器
如何实现侧边两栏宽度固定,中间栏宽度自适应的布局?——双飞翼布局、圣杯(Holy Grails)布局
如何实现侧边两栏宽度固定,中间栏宽度自适应的布局?——双飞翼布局、圣杯(Holy Grails)布局
83 0
|
前端开发 容器
两栏布局的实现方式
两栏布局的实现方式
|
iOS开发
iOS开发 - 渐变导航条升级版(判断滚动的方向和改变方向时的位置)
iOS开发 - 渐变导航条升级版(判断滚动的方向和改变方向时的位置)
136 0
iOS开发 - 渐变导航条升级版(判断滚动的方向和改变方向时的位置)