Qml基于锚(anchors)的布局
锚(anchors)布局,每一个项目都可以认为有一组无形的锚线
left,horizontalCenter,right,top,verticalCenter,baseline和bottom.
如上图:图中没有显示baseline,它是一条假想的线,文本坐落在这条线上。对于没有文本的项目它与top相同。
- 使用锚布局
7条锚分别对应了Item项目中的anchors属性组的相关属性。因为Qt Quick中所有可视项目都继承自Item,所以所有可视项目都可以使用锚进行布局。Qt Quick的锚定系统允许不同项目的锚线之间建立关系。
import QtQuick 2.2Item {Rectangle {id: rect1width: 50; height: 50; color: "blue"}Rectangle {id: rect2width: 50; height: 50; color: "red"anchors.left: rect1.right}
}
- 这里rect2的左边界锚定到了rect1的右边界。
- 另外还可以指定多个锚。
Rectangle { id: rect1; .... }
Rectangle {id: rect2;anchors.left; rect1.right; anchors.rop; rect1.bottom; ...
}
通过指定多个水平或者垂直的锚可以控制一个项目的大小:
例如:rect2锚定到了rect1的右边和rect3的左边,当rect1或rect3移动时,rect2会进行必要的伸缩或收缩。
Rectangle { id: rect1; x: 0; ... }
Rectangle { id: rect2; anchors.left: rect1.right; anchors.right: rect3.left; ... }
Rectangle { id: rect3; x: 150; ... }
Qt Quick 还提供了一系列方便使用的锚。例如,使用anchors.fill等价于设置left,right,top和bottom锚定到目标项目的left,right,top和bottom; anchors.centerIn等价于设置verticalCenter和horizontalCenter锚定到目标项目的verticalCenter 和 horizontalCenter等。
- 锚边距和位移
锚定系统也允许为一个项目的锚指定边距(margin)和偏移量(offset)。 边距指定了项目锚到外边界的空间量,而偏移则允许使用中心锚线进行定位。一个项目可以通过leftMargin,rigtMargin,topMargin和bottomMargin独立指定锚边距。
如图所示:也可以使用anchor.margins来为所有的4个边指定相同的边距。锚偏移可以使用
horizontalCenterOffset,verticalCenterOffset 和 baselineOffset来指定。
- 例如下面代码片段中,在rect2的左边留有5像素的边距。运行效果示意图:
import QtQuick 2.0Item {Rectangle { id: rect1; width: 50; height: 50; color: "blue" }Rectangle {id: rect2;width: 50; height: 50;color: "red"anchors.left: rect1.right;anchors.leftMargin: 5;}
}
- 运行时改变锚
Qt Quick 提供了AnchorChanges类型,以便在运行时修改项目的锚,它需要在状态State中进行。AnchorChanges不能修改项目的边距,需要时可以使用PropertyChanges完成。
例子:使用AnchorChanges改变了项目的top和bottom锚,使用PropertyChanges修改了top和bottom锚边距。
import QtQuick 2.2Rectangle {id: windowwidth: 120; height: 120color: "black"Rectangle { id: myRect; width: 50; height: 50; color: "red" }states: State {name: "reanchored"AnchorChanges {target: myRectanchors.top: window.topanchors.bottom: window.bottom}PropertyChanges {target: myRectanchors.topMargin: 10anchors.bottomMargin: 10}}MouseArea {anchors.fill: parent;onClicked: window.state = "reanchored"}
}
Qml基于锚(anchors)的布局相关推荐
- QML基础:锚anchors
正文 除了传统的Grid.Row和Column外,Qt Quick还提供了一种使用锚点的方法来布局.可以将每个元素视为具有7条不可见的"锚定线"的集合:left.horizonta ...
- QML编程之旅 -- 元素布局
文章目录 QML编程之旅 -- 元素布局 1.Positioner(定位器) 2.重复器 3.锚点 QML编程之旅 – 元素布局 概述: QML编程中可以用X,Y属性手动布局元素,但这些属性是与元素父 ...
- QML中的定位器和布局
QML中的定位器和布局 QML中的定位器和布局 手动定位 锚点 定位器 布局类型 QML中的定位器和布局 手动定位 通过设置项目的x,y属性,可以将它们放置在屏幕上的特定x,y坐标处.根据视觉坐标系规 ...
- 基于锚框与无需锚框的通用物体检测算法
物体检测通常是指在图像中检测出物体出现的位置及对应的类别,是计算机视觉的根本问题,也是最基础的问题.它广泛应用于日常生活中,如浏览器的拍照识图.自动驾驶行人车辆检测.道路目标检测(人行道检测)及图像分 ...
- 详解通用物体检测算法:基于锚框与无需锚框
物体检测通常是指在图像中检测出物体出现的位置及对应的类别,它是计算机视觉中的根本问题之一,同时也是最基础的问题,如图像分割.物体追踪.关键点检测等都依赖物体检测. 从应用来看,物体检测已广泛应用于大家 ...
- 13款基于jQuery Mobile的布局插件和示例
现在已经进入了移动互联网时代,因此将你的网站迁移到移动设备上就显得比较重要的.问题是,如何在移动设备的小屏幕中呈现你的网站中的所有内容呢? 本文介绍13款基于jQuery Mobile的布局插件和示例 ...
- 基于bootstrap的在线布局工具
在这里推荐一款基于bootstrap的在线布局工具,以后布局可以就可以和做PPT一样了 http://www.bootcss.com/p/layoutit/ 转载于:https://www.cnblo ...
- sass 基于ruby_使用Sass和Gerillass创建漂亮的基于卡片的设计布局
sass 基于ruby Creating a card-based design layout can often be challenging, especially if you don't us ...
- matlab代做mhslogic,MATLAB代做|FPGA代做|simulink代做——基于遗传算法的车间布局优化MATLAB源码...
MATLAB代做|FPGA代做|simulink代做--基于遗传算法的车间布局优化MATLAB源码 添加时间:2019-12-8 来源:本站整理 基于遗传算法的车间布局优化MATLAB源码 车间布局优 ...
最新文章
- PHP的cookie与session的使用
- rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
- SSE命令示例代码(算术、逻辑、比较)
- CentOS系统代理配置
- 滑动窗口--单调队列
- 新一代纯前端控件集 WijmoJS 2018V2发布,提供 Web 设计器,可动态设计页面并生成代码...
- unity常见问题之20题
- socket 编程入门教程(五)UDP原理:4、“有连接”的UDP
- snmp+mrtg监控-note
- mysql每次update数据,自动更新对应表中时间字段
- oracle更新字段为null,OracleORA-01451:要修改为NULL的列无法修改为NULL
- php 类似百度分页,写了一个仿百度贴吧分页效果的分页类,有人要么?
- vc2013 调用大漠插件例子
- caxa发生文件读写异常_文件和异常
- 中国裁判文书网爬虫分析
- 应用程序无法正常启动0xc000007b解决方法
- Cloudera Manager 安装
- JAR包中的MANIFEST.MF文件详解以及编写规范
- 二层交换机VLAN基础配置
- MySQL隔离级别的底层理解(MVCC+锁)