QT之QML布局相关总结

使用QML有助于提高界面编写效率,对付界面开发来说,页面如何布局是一个绕不开的点,本文总结一下QML中常用的一些和布局相关的内容。

目录

1.手动定位

2.坐标绑定定位

3.锚定位

4.布局定位器

5.布局管理器

6.其他布局相关

6.1 弹簧功能

6.2 implicitWidth,implicitHeight 和 width,height

6.3 QML常见元素

6.4 qml 如何设置窗口大小为自适应


1.手动定位

    设置x,y的值
    特点:常用于静态页面


2.坐标绑定定位

    x,y为绑定的表达式
    特点:具有动态性,有一定性能开销


3.锚定位

 使用比较多,性能较好

anchors(锚)布局属性总结
anchors属性分为三部分:anchorLine  margin  offset
1.anchorline
是anchors布局的基础,anchorline、bottom、
left、right、horizontalCenter、verticalCenter和baseline七条。
一个元素的AnchorLine和另外一个元素的AnchorLine进行对齐

2.margin
margin分为topMargin bottomMargin leftMargin rightMargin,分别表示上下左右的边距


3.offset
anchors布局有七条anchorline,margin有四个,四个margin对应四个anchorline,
另外的三个anchorline还需要进一步调整,这就是offset的作用,offset有horizontalCenterOffset、
verticalCenterOffset和baselineOffset

4.其他特殊属性
anchors.fill和anchors.centerIn,分别表示填满元素和在元素中居中。两个属性的取值是Item
子元素宽度:childrenRect.width


4.布局定位器

    Row(行定位器)
    Column(列定位器)
    Grid(网格定位器)
    Flow(流式定位器)


5.布局管理器

  RowLayout(行布局管理器)
    ColumnLayout(列布局管理器)
    GridLayout(网格布局管理器)
 

6.其他布局相关

6.1 弹簧功能

类似QT中qt widget里的spacingItem(弹簧功能)
Item { 
    Layout.fillWidth:true 
}

6.2 implicitWidth,implicitHeight 和 width,height

     width、height只是设置了该控件的框架的宽度和高度,但其中的内容的大小的值是由implicitWidth/implicitHeight属性表示的。一个控件的width和height在控件初始化的时候便确定好了,而implicitWidth/implicitHeight是跟随着控件包含的内容的变化而变化的。

6.3 QML常见元素

   Item元素
  Item是所有可视化元素的基础对象,所有其它的可视化元素都继承自Item。它自身不会有任何绘制操作,但是定义了所有可视化元素共有的属性:
Geometry(几何属性)——x,y(坐标)定义了元素左上角的位置,width,height(长和宽)定义元素的显示范围,z(堆叠次序)定义元素之间的重叠顺序。
Layout handing(布局操作)——anchors(锚定),包括左(left)、右(right)、上(top)、下(bottom),水平与垂直居中(vertical center,horizontal center),与margins(间距)一起定义了元素与其它元素之间的位置关系。
Key handling(按键操作)——附加属性key(按键)和keyNavigation(按键定位)属性来控制按键操作,处理输入焦点(focus)可用操作。
缩放(scale)和rotate(旋转)转换,通用的x,y,z属性列表转换(transform),旋转基点设置(transformOrigin)。
Visual(可视化)——不透明度(opacity)控制透明度,visible(是否可见)控制元素是否显示,clip(裁剪)用来限制元素边界的绘制,smooth(平滑)用来提高渲染质量。
State definition(状态定义)——states(状态列表属性)提供了元素当前所支持的状态列表,当前属性的改变也可以使用transitions(转变)属性列表来定义状态转变动画。
注意Item通常被用来作为其它元素的容器使用,类似HTML中的div。

关于Item元素,可参考如下链接:

https://blog.51cto.com/hongpangzi/5224784#Methods
Rectangle(矩形框元素)

Rectangle是基本元素对象的一个扩展,增加了一个颜色来填充它。它还支持边界的定义,使用border.color(边界颜色),border.width(边界宽度)来自定义边界。
可以使用radius(半径)属性来创建一个圆角矩形。
Text(文本元素)
Image(图像元素)
    source属性提供了图像文件的链接信息,fillMode属性能够控制元素对象的大小调整行为。
MouseArea(鼠标区域元素)
    为了与不同的元素交互,通常需要使用MouseArea元素。这是一个矩形的非可视化元素对象,你可以通过它来捕捉鼠标事件。当用户与可视化端口交互时,mouseArea通常被用来与可视化元素对象一起执行命令。
例如鼠标上下左右矩形跟随移动示例:
Rectangle{
           //anchors.centerIn: parent
           x: parent.width/2
           y:parent.height/2
           color: "red"
           width: 200
           height: 200
           focus: true

           //通过键盘的上下左右键移动元素
           Keys.onLeftPressed: x-=10  //按下键盘左键使X轴坐标-10
           Keys.onRightPressed: x+=10 //按下键盘右键使X轴坐标+10
           Keys.onUpPressed: y-=10
           Keys.onDownPressed: y+=10

           //通过1和2 键缩放元素
           Keys.onDigit1Pressed: scale+=0.2
           Keys.onDigit2Pressed: scale-=0.1

    }

spacing:用来设置子元素之间水平或者垂直距离
网格布局中有:rowSpacing columnSpacing
rowSpacing属性用来设置各个子元素之间的水平空格距离
columnSpacing属性用来设置各个子元素之间的垂直空格距离。

Grid 网格布局中:有layoutDirection(默认值:Qt.LeftToRight)和flow(默认值:Gird.LeftToRight)
layoutDirection属性决定元素是先放左边还是先放右边,而flow属性决定元素是先填满行还是先填满列。
layoutDirection:该属性设置子元素的排列方向,例如:Qt.RightToLeft

6.4 qml 如何设置窗口大小为自适应

import QtQuick 2.0
import QtQuick.Controls 2.12
ApplicationWindow {visible: truewidth: Screen.width * 0.8 // 设置窗口宽度为屏幕宽度的80%height: Screen.height * 0.8 // 设置窗口高度为屏幕高度的80%// 或者也可以将width和height属性设置为父级元素的宽高,实现相对布局// width: parent.width * 0.8// height: parent.height * 0.8
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bpmn2 vue 设计器_vue项目中使用bpmn-基础篇

后退前进下载style"display: inline-block;":file-list"fileList"class"upload-demo"action"":auto-upload"false":show-file-list"false":http-request"httpRequest":on-change"handleOnchangeFi…

JSP的隐含对象/隐藏对象/内置对象介绍

文章目录outJspWriter 和 PrintWriter 的区别requestresponsesessionapplicationexceptionconfigpageContextpageContext 的作用绑订数据获得其它几个隐含对象page四个 JSP 域对象访问范围比较out out 对象是 javax.servlet.jsp.JspWriter 类的实例,用来在 respons…

hystrix应用 博客_使用Hystrix DSL创建弹性骆驼应用程序

hystrix应用 博客Apache Camel是一个成熟的集成库(到现在已有9年的历史了),它实现了Enterprise Integration Patterns一书中的所有模式。 但是Camel不仅是EIP实现库,它还是一个不断发展,添加新模式并适应行业变化的现代…

notebook打开外部文件_CAD外部参照真是个好东西!

好课推荐:零基础CAD:点我CAD室内:点我 周站长CAD:点我CAD机械:点我 Bim教程:点我CAD建筑:点我CAD三维:点我全屋定制:点我 ps教程:点我苹果版CAD:点我 3dmax教…

JSP动作元素/活动元素

文章目录jsp:forwardjsp:includejsp:paramjsp:useBeanjsp:setPropertyjsp:setProperty name"" property"" value""jsp:setProperty name"" property"" param""jsp:setProperty name"" property"*&…

【数论系列】任意角的三角函数

角度转为弧度 import math math.radians(x) 弧度转为角度 import math math.degrees(x) 正弦函数 import math math.sin(弧度) 余弦函数 import math math.cos(弧度) 正切函数 import math math.tan(弧度)

gradle groovy_适用于Java开发人员的Groovy吗? 认识Gradle,Grails和Spock

gradle groovyJava开发人员最感兴趣的Groovy用例有哪些? 尽管已经有一段时间了,但似乎只有Groovy最近才开始使用Groove。 对于某些人来说,它基本上只是另一种深奥的JVM语言,但是由于一些流行的工具可以帮助您使用Java&#xff0c…

JSP 指令元素

文章目录page 指令import 属性pageEncoding 属性contentType 属性session 属性isELIgnored 属性errorPage 属性isErrorPage 属性include 指令file 属性taglib 指令uri 属性prefix 属性jsp 源文件转换成对应的 .java 文件时,jsp 的指令会影响 Java 源代码的生成&…

Python日常工具 ----- 读取Excel表格下载MP3

import xlrd import os import requestsdef GetList():worksheet xlrd.open_workbook(01.xlsx)sheet_names worksheet.sheet_names()print(sheet_names)for sheet_name in sheet_names:sheet worksheet.sheet_by_name(sheet_name)rows sheet.nrows # 获取行数cols sheet.…

indesign中调出字符样式快捷键_Word中十大黄金快捷键,你会用几个?

在使用Word文档时,熟练使用快捷键能够有效的提升我们的工作效率,但是,Word中快捷键也比较多,要想全部掌握,那不太现实,这里,易老师给大家挑选了10组黄金快捷键,非常实用。01 快速移动…

couchbase集群_使用CLI扩展和重新平衡Couchbase集群

couchbase集群Couchbase通过多种方式提供高可用性和灾难恢复 : 同质簇 复写 集群内复制 备份还原 机架区意识 该博客将展示如何使用Couchbase命令行界面(CLI)创建Couchbase集群。 此外,还可以使用Couchbase REST API和Couchba…

【音视频安卓开发 (十)】jni开发中将java中的buffer映射到native c++中

首先在java层定义一个buffer,并且开辟相应的内存空间 private ByteBuffer byteBuffer; byteBuffer ByteBuffer.allocateDirect(bytesPerFrame * framesPerBuffer ); 然后调用本地的方法来设置内存地址到native层,该方法在jni初始化时就已经被动态的注册了方法,注…

maya室内模型_C4d和3dmax、maya相比有什么优势?

C4D和3dmax、maya都是三维软件,功能都是非常的nice,很多新手小伙伴就在好奇它们有什么区别,对比之下,c4d有哪些优势?c4d和3dmax的主要应用领域就是区分它们的地方。C4D一般用于栏目包装,影视后期&#xff0…

HH SaaS电商系统的标签系统设计

文章目录打标规则公式打标公式变量修改标签删除标签标签实体标签与对象的关系标签和商品:标签和商城会员:标签和租户会员:打标规则公式 公式名称:近日销量创历史新高 规则公式:近$ {days}销量创历史新高 公式名称&a…

jvm高并发_在JVM上对高并发HTTP服务器进行基准测试

jvm高并发在第一篇关于HTTP客户端的文章 (我将您重定向到JVM上的高效HTTP的介绍)之后,现在让我们来谈谈HTTP 服务器 。 有一些关于HTTP服务器的基准测试,但通常受到诸如以下缺点的阻碍: 没有有效地执行高并发方案&am…

【WebRTC---源码篇】(十)WEBRTC/RTCP SR持续更新中)

关于WebRTC/SR(发送者报告)的内容可以通过阅读以下链接来查看,本文重点研究WebRTC源码中RTCP报文构造和发送,以及相关的数据从何而来。在发送端,RTCP以周期性发送为基准,辅以RTP报文发送时的及时发送和REMB报文的立即发送。发送过程主要包括Feedback信息获取、RTCP报文构…

excel未完全加载怎么办_你知道如何改变Excel的打开姿势吗?

你是否曾经想过在启动Excel时自动打开某些特定的文档?当然,你永远都可以手动去打开任何一个文档,但是如果有那么一种可能,去每次省下那么几秒来自动完成这一操作,你会愿意尝试吗?今天,火箭君就和…

电商系统的售后模块设计

文章目录售后单实体方案一方案二服务类型可选售后服务判断规则退款类型售后截止时间金币和优惠券如何返还买家端订单列表的“售后按钮”逻辑说明服务端处理逻辑买家端操作“售后按钮”页面跳转逻辑商家管理后台订单列表的“售后处理”逻辑说明服务端处理逻辑商家端操作“售后处…

Gradle技巧–显示buildscript依赖性

在Gradle中如何显示和分析buildscript依赖项(例如插件)的简单方法 介绍 这是我的Gradle技巧迷你系列的第三部分,该系列与可视化和依赖性分析有关。 在第一篇文章中,我介绍了如何显示多项目构建中所有子项目的依赖关系的方法。 在…

任意采样率转16K采样率

import osdef OtherTo16bit(Path, data):InPath Path \\ dataOutPath os.getcwd() \\16home\\ data.split(".")[0] ".wav"os.system(ffmpeg -i InPath -acodec pcm_s16le OutPath)# path定义要获取的文件名称的目录(C盘除外&#…