QML 元素布局

news2024/9/22 21:19:52

定位器:是QtQuick模块中的提供的,有以下三种

  1. Row  行定位器
  2. Column 列定位器
  3. Grid  网格定位器
  4. Flow 流动定位器

常用属性: 

spacing间距

Row (行定位器)

按照行的方排列

//行定位器
Row{
        spacing: 5//设置间距
        Rectangle{
            width: 100
            height: 200
            color: "red"
        }
        Rectangle{
            width: 100
            height: 100
            color: "green"
        }
        Rectangle{
            width: 200
            height: 100
            color: "blue"
        }
    }

Column(列定位器)

 按照列的方式排列

//列定位器
Column{
        spacing: 5//设置间距
        Rectangle{
            width: 100
            height: 200
            color: "red"
        }
        Rectangle{
            width: 100
            height: 100
            color: "green"
        }
        Rectangle{
            width: 200
            height: 100
            color: "blue"
        }
    }

 Grid(网格定位器)

网格定位会计算一个足够大的矩形单元网格来容纳所有项目,一个Grid定位默认有4列,可以通过rows和columns属性修改。

属性:

rows行数
column列数

默认为4列:

Grid{//列定位器
        spacing: 5//设置间距
        Rectangle{width: 100;height: 200;color: "red"}
        Rectangle{width: 50;height: 20;color: "black"}
        Rectangle{width: 100;height: 20;color: "green"}
        Rectangle{width: 200;height: 200;color: "blue"}
        Rectangle{width: 60;height: 60;color: "yellow"}
        Rectangle{width: 80;height: 30;color: "purple"}
        Rectangle{width: 50;height: 40;color: "brown"}
    }

 自定义列数:

Grid{//列定位器
        spacing: 5//设置间距
        columns:3 //设置列数
        Rectangle{width: 100;height: 200;color: "red"}
        Rectangle{width: 50;height: 20;color: "black"}
        Rectangle{width: 100;height: 20;color: "green"}
        Rectangle{width: 200;height: 200;color: "blue"}
        Rectangle{width: 60;height: 60;color: "yellow"}
        Rectangle{width: 80;height: 30;color: "purple"}
        Rectangle{width: 50;height: 40;color: "brown"}
    }

Flow(流动定位器) 

Flow 项将其子项定位为页面上的单词,并将它们换行以创建项目的行或列。

通俗的讲:当改行的位置存放不了这整个数据时,会自动换行。

常用属性:

padding填充
forceLayout强制布局
positioningComplete()定位完成发出信号
spacing间距
populate填充,此属性保存要在创建时为此定位器一部分的项运行的转换。转换在首次创建定位器时运行
move移动,此属性保存对已在定位器内移动的项运行的转换。对于定位器,这适用于:
  • 由于定位器中添加、移除或重新排列其他项目而移位时移动的子项目
  • 由于调整定位器中其他项的大小而重新定位的子项
loyoutDirection

布局方向

Flow.LeftToReight(左到右 默认)

Flow.ReightToLeft(右到左)

add

填充,此属性保存要为添加到此定位器的项运行的转换。对于定位器,这适用于:

  • 创建定位器后作为定位器的子项创建或重定父级的项目
  • 将其 Item:visible 属性从 false 更改为 true 的子项,因此现在可见

文字的例子: 

Rectangle{
        color:blue;
        width: 200
        height: 200
        Flow{
            anchors.fill: parent
            spacing: 5//设置间距
            Text{text: "AAAAA";font.pixelSize: 20}
            Text{text: "BBBBB";font.pixelSize: 20}
            Text{text: "CCCCC";font.pixelSize: 20}
            Text{text: "DDDDD";font.pixelSize: 20}
            Text{text: "EEEEE";font.pixelSize: 20}
            Text{text: "FFFFF";font.pixelSize: 20}
            Text{text: "GGGGG";font.pixelSize: 20}
            Text{text: "HHHHH";font.pixelSize: 20}
        }

    }

 部件的例子:

Rectangle{
        color:"blue"
        width: 200
        height: 200
        Flow{
            anchors.fill: parent
            spacing: 5//设置间距
            Rectangle{width: 10;height: 20;color: "red"}
            Rectangle{width: 50;height: 20;color: "black"}
            Rectangle{width: 100;height: 20;color: "green"}
            Rectangle{width: 200;height: 20;color: "blue"}
            Rectangle{width: 60;height: 60;color: "yellow"}
            Rectangle{width: 80;height: 30;color: "purple"}
            Rectangle{width: 50;height: 40;color: "brown"}
        }

    }

 Repeater(重复器)

使用Reperter元素来创建大量相似的项目。一个Repeater包含一个模型model和一个委托delegate属性,委托用来将模型中的每一个条目分别实例化。Repeater通常会包含在定位器中以直观地对Repeater产生的众多委托类项目进行布局。

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Grid{
        x:10
        y:10
        spacing: 10

        Repeater{//创建一个复制器
            model:24//生成24个
            Rectangle{//创建一个矩形
                width:50
                height: 50
                color: "aqua"//设置颜色
                Text{
                    anchors.centerIn: parent
                    color: "black"
                    font.pixelSize: 20 //设置字体大小
                    text:index    //获取编号,从0开始
                }
            }
        }
    }
}

Anchor(锚)

除了 Row 、Column、Grid 等,QML还提供Anchor(锚)来对元素进行布局。

元素的锚线:

 元素的锚线有:left、rignt、top、button、horizontalCenter、verticalCenter

例子:

Rectangle{
        id:rect1
        color: "red"
        width: 100
        height: 100
    }
    Rectangle{
        id:rect2
        width: 100
        height: 100
        color: "blue"
        anchors.left: rect1.right //矩形的左边=rect1的右边
        anchors.top: rect1.bottom//矩形的顶部=rect1的底部
    }

Rectangle{
        id:rect1
        color: "red"
        width: 100
        height: 100
    }
    Rectangle{
        id:rect2
        width: 100
        height: 100
        color: "blue"
        anchors.left: rect1.right //矩形的左边=rect1的右边
        anchors.top: rect1.top//矩形的顶部=rect1的顶部
    }
    Rectangle{
        id:rect3
        width: 100
        height: 100
        color: "green"
        anchors.left: rect2.right //矩形的左边=rect1的右边
        anchors.top: rect2.top//矩形的顶部=rect1的顶部
    }

 元素锚边距:

元素的锚边距有:topMargin、leftMargin、rightMargin、bottomMargin

Rectangle{
        id:rect1
        color: "red"
        width: 100
        height: 100
    }
    Rectangle{
        id:rect2
        width: 100
        height: 100
        color: "blue"
        anchors.left: rect1.right //矩形的左边=rect1的右边
        anchors.leftMargin: 20;//左间距
   }
    Rectangle{
        id:rect3
        width: 100
        height: 100
        color: "green"
        anchors.left: rect1.left //矩形的左边=rect1的左边
        anchors.top: rect1.bottom //矩形的顶部=rect1的底部
        anchors.topMargin: 20;//上间距
   }

 注意:使用时自能将项目定位到器其同级和直接父级,且基于锚的布局不能与绝对的位置定义(x和y)混合使用。

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

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

相关文章

[蓝桥杯] 二分与前缀和习题练习

文章目录 一、二分查找习题练习 1、1 数的范围 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 机器人跳跃问题 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 四平方和 1、3、1 题目描述 1、3、2 题解关键思路与解答 二、前缀和习题练习 2、1 前缀和 2、1、1 题目描述…

《操作系统》——第二章 进程与线程

目录 2.1.1进程的概念、组成、特征 2.1.2进程的状态与转换、进程的组织 2.1.3进程控制 2.1.4进程通信 2.1.5线程的概念 2.1.6线程的实现方式和多线程模型 2.2.1调度的概念、层次 2.2.2进程调度的时机、切换与过程、方式 2.2.4调度算法的评价指标 2.2.5调度算法(1) 2…

1249 亲戚(并查集)

1249. 亲戚 题目 提交记录 讨论 题解 视频讲解或许你并不知道,你的某个朋友是你的亲戚。 他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。 如果能得到完整的家谱,判断两个人是否是亲戚应该是可行的,但如果两个人的最近公共祖…

数据库之高级查询

注意:第一个包含空,第二句不包含空注意:第二句是错的,聚合函数不能出现在where中。注意:相当于,按照分组属性,求出每个组的聚合函数值,所以肯定不能放单个属性有冲突with rollup是最…

MyBatis - 05 - 封装SqlSessionUtil工具类(用于获取SqlSession对象)并测试功能

文章目录1.新建SqlSessionUtils工具类2.编写静态方法3.项目结构及代码项目结构数据库和表pom.xmlParameterMapper接口:User类:ParameterMapper.xmljdbc.propertieslog4j.xml:mybatis-config.xml:ParameterMapperTest测试类:测试结果1.新建Sql…

leetcode打卡-回溯I

77. 组合 leetcode题目链接&#xff1a;https://leetcode.cn/problems/combinations/ leetcode AC记录&#xff1a; 代码如下&#xff1a; public List<List<Integer>> combine(int n, int k) {List<List<Integer>> res new ArrayList<>(16…

操作系统期末复习

操作系统概论 文章目录操作系统概论操作系统的目标&#xff1a;基本特征:主要功能发展操作系统的运行机制时钟管理中断机制&#xff1a;指令程序处理机状态原语&#xff1a;由若干指令组成的程序段&#xff0c;完成特定功能系统数据结构系统调用体系结构进程--资源分配和调度的…

[黑马程序员SSM框架教程] Spring-22 注解开发依赖注入

1.自动装配是基于暴力反射对私有属性进行装配的&#xff0c;所以不需要setter方法。打破了IOC提供对象&#xff0c;我提供入口的思想。现在不用提供入口也能实现。 2. Qualifier必须依赖注解Autowired&#xff0c;当自动装配的接口类型有多个实现类时使用&#xff0c; 3. Autow…

Linux基础命令-du查看文件的大小

文章目录 du 命令介绍 语法格式 基本参数 参考实例 1&#xff09;以人类可读形式显示指定的文件大小 2&#xff09;显示当前目录下所有文件大小 3&#xff09;只显示目录的大小 4&#xff09;显示根下哪个目录文件最大 5&#xff09;显示所有文件的大小 6&#xff0…

layui框架学习(11:徽章)

应用程序有新增内容、未读消息时&#xff0c;会在按钮或菜单中添加红点或带数字的点状或方状图形&#xff0c;用户看到就知道有新内容&#xff0c;如下图所示QQ邮箱的截图&#xff0c;会通过红色圆点或带NEW的方框提醒用户有新内容可以查看。   CSDN用户如果有新消息&#x…

产品经理有必要考个 PMP吗?(含PMP资料)

现在基本上做产品的都有一个PMP证件&#xff0c;从结果导向来说&#xff0c;不对口不会有这么大范围的人来考&#xff0c;但是需要因地制宜&#xff0c;在公司内部里&#xff0c;标准程序并不流畅&#xff0c;产品和项目并不规范&#xff0c;关系错综复杂。 而产品经理的职能又…

【Java学习】初识Java

JavaSEJava初识1. Java简介2.Java环境的安装与配置3. 开发第一个Java程序Java初识 学前疑问&#xff1a;&#xff08;带着疑问去学习&#xff0c;在学习中自行探索答案&#xff09; Java是什么&#xff1f;能做什么&#xff1f;发展前景如何&#xff1f;需要学习哪些内容&…

腾讯一面—Android 系统启动流程详解

正文AMS 是 Android 中最核心的服务之一&#xff0c;主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作&#xff0c;其职责与操作系统中的进程管理和调度模块相类似&#xff0c;它本身也是一个 Binder 的实现类&#xff0c;应用进程能通过 Binder 机制调用…

ESPRESSIF ESP32 开发环境搭建

1.下载Espressif-IDE并安装&#xff0c;安装的时候直接下一步就行&#xff0c;下载地址为 IDE下载地址 2.新建项目 1&#xff0c;首先磁盘新建文件夹&#xff0c;用来保存项目 2&#xff0c;File ->New ->乐鑫IDF项目-> 工程名字test->保存目录就是自己建立的哪个…

EasyRecovery16MAC苹果版本Photo最新版数据恢复软件

无论是在工作学习中&#xff0c;还是在生活中&#xff0c;Word、Excle等办公软件都是大家很常用的。我们在使用电脑的过程中&#xff0c;有时会因自己的误删或电脑故障&#xff0c;从而导致我们所写的文档丢失了。出现这样的大家不要着急&#xff0c;今天小编就给大家推荐一款可…

nacos 单机集群搭建及常用生产环境配置 | Spring Cloud 3

一、Nacos 概览 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮…

《程序员思维修炼》速读笔记

文章目录书籍信息概览绪论从新手到专家的历程认识大脑利用右脑调试大脑主动学习积累经验控制注意力超越专家图解书籍信息 书名&#xff1a;《程序员思维修炼&#xff08;修订版&#xff09;》 作者&#xff1a;[美] Andy Hunt 概览 绪论 再提“实用”关注情境所有人都关注这…

kafka使用入门案例与踩坑记录

每次用到kafka时都会出现各种奇怪的问题&#xff0c;综合实践&#xff0c;下面汇总下主要操作步骤&#xff1a; Docker镜像形式启动 zookeeper启动 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeperkafka启动 docker run --name kafka01 -p 9092:909…

Apk转Aab(Android-App-Bundle)

这篇文章是参考Apk转Aab(Android-App-Bundle)_YoungBillsohu的博客-CSDN博客 基本照着这个大佬的步骤来就行&#xff0c;但是要注意的是apkTool最好是下新的&#xff0c;否则&#xff0c;会出现说一堆无语的错误&#xff0c;然后导致AAPT2关联资源的时候报错 类似这样的&#…

Java自定义生成二维码(兼容你所有的需求)

1、概述作为Java开发人员&#xff0c;说到生成二维码就会想到zxing开源二维码图像处理库&#xff0c;不可否认的是zxing确实很强大&#xff0c;但是实际需求中会遇到各种各样的需求是zxing满足不了的&#xff0c;于是就有了想法自己扩展zxing满足历史遇到的各种需求&#xff0c…