QML语法基础三

布局管理

QML提供了多种布局管理器、定位器、基于锚anchors的布局、x,y,width,height等调整用户界面
如果可以通过x y width height 解决,尽量使用,因为布局管理器、定位器锚会占用大量内存和实例化时间

1. 定位器

Column

将子项目排成一列

  • spacing属性添加间距
  • padding用来设置子与父边界的间距,topPadding、bottomPadding、leftPadding、rightPadding
  • 例子
 Column{
    spacing:2;padding:5;
    Rectangle{}
    Rectangle{}
    Rectangle{}
}

Row

将子项目排成一行

Row{
    spacing:2;padding:5;
    Rectangle{}
    Rectangle{}
    Rectangle{}
}

Grid

将子项目排列在网格中,向网格中添加项目会按照从左到右,从上到下进行排列

  • 一个Grid默认有四列,但是有无数行,行列通过rows、columns指定
  • spacing设置行列的间距,也可以分开rowSpacing、columnSpacing
    columns设置初始行数
  • horizontalItemAlignment: 设置在水平方向的对齐方式
    Grid.AlignLeft Grid.AlignRight Grid.AlignHCenter
  • verticalItemAlignment:
    Grid.AlignTop Grid.AlignBottom Grid.AlignVCenter
Grid{
   columns:3       //每行三列
   spacing:2;padding:5;
   Rectangle{}
   Rectangle{}
   Rectangle{}
   Rectangle{}
   Rectangle{}
}

Flow

可以从前向后,像流一样布局子项目,超出宽度自动话换行
flow: Flow.LeftToRight Flow.TopToBottom

Rectangle{
   width:100;height:100;
   Flow{                    
       anchors.fill: parent;
       Text{text:"12312312321"}        //文字超出自定换行
       Text{text:"12312312321"}
       Text{text:"12312312321"}
       Text{text:"12312312321"}
   }
}

过渡器 Transition

定位器添加删除一个子Item时,可以使用Transition,添加动画效果 上述四个定位器都有 add move
populate属性

Column{
	Rectangle{color:"red"}
	Rectangle{color:"blue"}
	Rectangle{id:greenRec;color:"green"}
	move:Transition{NumberAnimation{properties:"x,y";duration:1000;}
	focus:true 
	keys.onSpacePressed:greenRec.visible =! greenRec.visible   
}

Positioner

为定位器的子项目提供索引信息

Repeater

创建大量相似项目
包含一个model、一个delegate,委托用来将模型中的item进行显示
Rectangle{
    width:100;height:100;color:"black"
    Grid{
        x:5;y:5;
        rows:5;columns:5;
        Repeater{
            model:12
            Rectangle{Text{text:index}}     //使用Rectangle作为委托,文本中使用index显示每个item的编号  count获取创建的数量
        }
    }
}

2 基于锚的布局

每个Item都有一组无形的锚线:
left、right、top、bottom、horizontalCenter、verticalCenter、baseline
7条锚线分别对应了Item的anchors的相关属性

Item{
    Rectangle{id:rect1;Text{anchors.centerIn:parent}}
    Rectangle{
        id:rect2
        anchors.left:rect1.right    //该Rectangle锚定了rect1的右边界
        anchors.leftMargin:5;   //该Rectangle距离Rect1的右侧5像素
        anchors.top:rect1.bottom
        Text{anchors.centerIn:parent}
    }
}

运行时改变锚

AnchorChanges 运行时修改项目的锚,需要在状态State中进行,需要时可以使用PropertyChanges完成、使用AnchorAnimation提供动画效果

Rectangle{
    id:window 
    Rectangle{id:myRect}
    states:State{
        name:"reanchored"
        AnchorChanges{
            target:myRect
            anchors.top:window.top
            anchors.bottom:window.bottom
        }
        PropertyChanges{
            target:myRect
            anchors.topMargin:10
            anchors.bottomMargin:10
        }
    }
    transition:Transition{
        AnchorAnimation{
            duration: 1000
        }
    }
    MouseArea{
        anchors.fill:parent;
        onClicked:window.state="reanchored"
    }
}

3.布局管理器

QML的布局管理器和QWidget的很类似
需要引入 import QtQuick.Layouts
RowLayout、ColumnLayout、GridLayout、StackLayout
对齐方式:Layout.Alignment :
Qt::AlignLeft、
Qt::AlignRight、
Qt::AlignTop、
Qt::AlignBottom、
Qt::AlignHCenter、
Qt::AlignVCenter
可变大小:
Layout.fillWidth: true|false
Layout.fillHeight: true|false
间距:
spacing rowSpacing columnSpacing
网格布局坐标
Layout.row、Layout.column
行或列的跨度
Layout.rowSpan、 Layout.columnSpan
大小约束
最小宽高:minimumWidth、 minimumHeight
最佳宽高:preferredWidth、preferredHeight
最大宽高:maximumWidth、 maximumHeight
并将对应的Layout.fillWidth\Layout.fillHeight设置为true

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hive主要介绍

Hive介绍 hive是基于 Hadoop平台操作 HDFS 文件的插件工具 可以将结构化的数据文件映射为一张数据库表 可以将 HQL 语句转换为 MapReduce 程序 1.hive 是由驱动器组成,驱动器主要由4个组件组成(解析器、编译器、优化器、执行器) 2.hive本身不…

递归排列枚举(c++)

全部排列问题 输入 n 输出 1…n 个数的全部排列。全部排列中,数字可以重复 。 例如 输入 3 输出全部排列的结果如下:111、112、113、121、122、123、131、132、133、211、212、213、221、222、223、231、232、233、311、312、313、321、322、323、33…

4.18.2 EfficientViT:具有级联组注意力的内存高效Vision Transformer

现有Transformer模型的速度通常受到内存低效操作的限制,尤其是MHSA(多头自注意力)中的张量整形和逐元素函数。 设计了一种具有三明治布局的新构建块,即在高效FFN(前馈)层之间使用单个内存绑定的MHSA&#x…

浅谈数据模型

1:事实表和维表的概述 前言:数据仓库是一种用于存储和管理大量数据的技术。其中,事实表和维表是数据仓库中的两个重要概念,首先了解一下事实表和维度表 1.事实表:是指用于存储测量“事实数据”的表,事实数…

Unity 异常 bug

OverlapBoxNonAlloc 使用bug 环境: Unity2021.3.15 在测试场景中使用 OverlapBoxNonAlloc 测试检测没有问题 但是到了真实应用场景,使用 OverlapBoxNonAlloc 检测移动中的小怪 小怪碰撞体为:带有 Rigidbody 的Circle Collider 2D 就会出现异…

Java虚拟机(jvm)常见问题总结

1.电脑怎样认识我们编写的Java代码 首先先了解电脑是二进制的系统,他只认识 01010101比如我们经常要编写 HelloWord.java 电脑是怎么认识运行的HelloWord.java是我们程序员编写的,我们人可以认识,但是电脑不认识 Java文件编译的过程 1. 程…

代码随想录(番外)图论3|1020. 飞地的数量|130. 被围绕的区域

代码随想录&#xff08;番外&#xff09;图论3|1020. 飞地的数量|130. 被围绕的区域 1020. 飞地的数量 class Solution { public:int dir[4][2]{0,1,1,0,0,-1,-1,0};int count;void dfs(vector<vector<int>>& grid,int x,int y){grid[x][y]0;count;for(int i…

大数据开发详解

点击下载《大数据开发详解》 1. 前言 随着信息化时代的快速发展&#xff0c;大数据已经成为了企业和组织不可或缺的重要资源。大数据开发则是指通过一系列技术手段&#xff0c;对海量数据进行收集、存储、处理、分析和挖掘&#xff0c;以实现数据的价值化利用。大数据开发涉及…

哈希表练习题

前言 本次博客将要写一写&#xff0c;哈希表的一些使用 哈希表主要是一个映射&#xff0c;比如数组就是一个哈希表 是一个整型对应另一个整型&#xff0c;介绍的哈希表还是要以写题目为例 第一题 242. 有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; 直接来看…

C# 给图片添加文字水印

目录 应用场景 开发运行环境 方法说明 方法代码 调用示例 小结 应用场景 在某些应用项目&#xff08;如电子档案信息管理&#xff09;中&#xff0c;查看电子图片信息是经常使用到的功能&#xff0c;此时我们就需要给显示在浏览器中的图片添加文字水印版权或提示信息。…

Java面试八股之Java中==和equals()的区别

Java中和equals()的区别 操作符&#xff1a; 对于基本数据类型&#xff08;如int、char、boolean等&#xff09;&#xff0c;比较的是它们的值是否相等。 对于对象引用类型&#xff0c;比较的是两个对象的内存地址&#xff08;即是否指向同一个对象实例&#xff09;。也就是…

Jetbrains Fleet这十个快捷键,效率提高50倍

当我们无法解决一段感情中的问题 就会选择解决这段感情 如果真诚不得到回应 那么再热情的人 也会沉默 很多人对你感兴趣 却没有人执着于你 我们知道任何一款牛批的IDE 都是有很多快捷键的,但是我们没有superpower ,不能记住所有的快捷键。 所以下面就总结了使用fleet 过…

电磁兼容(EMC):静电放电(ESD)抗扰度试验深度解读(七)

目录 1. 第一步 确定电磁环境 2. 第二步 确认设备工作状态 3. 第三步 制定试验计划 4. 间接施加的放电 4.1 水平耦合板 4.2 垂直耦合板 静电抗扰度的试验测试细节对测试结果影响比较大&#xff0c;本文详细介绍静电抗扰度试验的测试程序和注意事项。 1. 第一步 确定电磁…

PostgreSQL的学习心得和知识总结(一百三十九)|深入理解PostgreSQL数据库GUC参数 allow_alter_system 的使用和原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…

【学习】​CSMM和CMMI的关系你了解吗

CMMI和CSMM都是评估和提升软件组织能力成熟度的模型&#xff0c;但它们在起源、应用范围、模型结构和实施目的等方面存在一些区别。在当今竞争激烈的软件市场中&#xff0c;提升软件能力成为了多数组织追求成功的关键因素。而选择适合的体系标准能够助力企业发展得更加迅速。作…

企业实施定制鞋厂ERP软件需要注意哪些问题?

企业实施定制鞋厂ERP软件是个复杂的管理系统工程&#xff0c;为了成功地为企业定制实施ERP软件&#xff0c;需要注意和解决几个关键的问题&#xff1a; . 确立ERP系统实施和定制的决策者&#xff1b;. 做好前期咨询与调研工作&#xff1b;. 做好系统产品或项目迭代规划&#x…

【MySQL 数据宝典】【内存结构】- 003 Change Buffer 详解

一、 Change Buffer基本概念 Change Buffer&#xff1a;写缓冲区,是针对二级索引(辅助索引) 页的更新优化措施。 作用: 在进行DML操作时&#xff0c;如果请求的是 辅助索引&#xff08;非唯一键索引&#xff09;没有在缓冲池 中时&#xff0c;并不会立刻将磁盘页加载到缓冲池…

【Qt】设置QT标准对话框为中文字体

设置QT标准对话框为中文字体 一、问题二、解决方法1、找到Qt内置的翻译文件 qt_zh_CN.qm2、在代码中加载该文件 一、问题 在Qt中我们使用的标准对话框都是英文&#xff0c;例如下面的 字体选择对话框&#xff0c;但是实际中我们需要构建的是中文对话框。 所以我们需要使用Qt官…

T1级,生产环境事故—Shell脚本一键备份K8s的YAML文件

大家好&#xff0c;我叫秋意零。 最近对公司进行日常运维工作时&#xff0c;出现了一个 T1 级别事故。导致公司的“酒云网”APP的无法使用。我和我领导一起搞了一个多小时&#xff0c;业务也停了一个多小时。 起因是&#xff1a;我的部门直系领导&#xff0c;叫我**删除一个 …

LeetCode 2739. 总行驶距离

题目链接https://leetcode.cn/problems/total-distance-traveled/?envTypedaily-question&envId2024-04-25 简单题&#xff0c;看代码思考一下即可理解 class Solution {public int distanceTraveled(int mainTank, int additionalTank) {int res 0;while (mainTank >…
最新文章