QML —— 四种定位器介绍,及中继器、定位器示例(Row、Column、Gird、Flow)(附完整源码)

news2024/11/18 1:24:32
示例效果

在这里插入图片描述

定位器介绍

     Row:行定位器一种将其子项沿单行定位的类型。它可以作为一种方便的方式,在不使用锚的情况下水平定位一系列项目。

     Column:列定位器是一种将其子项沿单个列定位的类型。它可以作为一种方便的方式,在不使用锚的情况下垂直定位一系列项目。

     Grid:网格定位器是一种以网格形式定位其子项的类型。网格创建一个足够大的单元格网格,以容纳其所有子项,并将这些项从左到右、从上到下放置在单元格中。每个项目都位于其单元格的左上角,位置为(0,0)。

     Flow:将其子项像单词一样放置在页面上,将它们包装起来以创建项的行或列。

其他

     Repeater:中继器类型用于创建大量类似项目。与其他视图类型一样,Repeater有一个模型和一个委托:对于模型中的每个条目,委托都在一个以模型数据为种子的上下文中实例化。中继器项目通常包含在定位器类型(如行或列)中,以直观地定位中继器创建的多个委托项目。删除或动态销毁由Repeater创建的项会导致不可预知的行为。

     Positioner:定位器类型的对象附着到列、行、流或网格中的顶级子项。它提供的属性允许子项确定其在其父项“列”、“行”、“流”或“网格”的布局中的位置

源码
import QtQuick 2.12
import QtQuick.Window 2.12

Window
{
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Rectangle
    {
        id: rootRect
        anchors.centerIn: parent
        width: parent.width
        height: parent.height
        color: "#555555"

        // 行定位器
        Row
        {
            anchors.top: parent.top
            anchors.topMargin: 5
            anchors.left: parent.left
            anchors.leftMargin: 5
            spacing: 5

            // 中继器
            Repeater
            {
                model: 4

                Rectangle
                {
                    width: 40
                    height: 40
                    color: getRectColor()

                    // 定位器: Positioner.index
                    function getRectColor()
                    {
                        let tColor = "green";
                        switch(Positioner.index)
                        {
                        case 0:tColor = "red";break;
                        case 1:tColor = "yellow";break;
                        case 2:tColor = "blue";break;
                        }
                        return tColor;
                    }
                }
            }
        }

        // 列定位器
        Column
        {
            anchors.left: parent.left
            anchors.leftMargin: 5
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 5
            spacing: 5

            Repeater
            {
                model: 4
                Rectangle
                {
                    width: 40
                    height: 40
                    color: Positioner.isFirstItem ? "red" : "pink"
                    Text
                    {
                        text: parent.Positioner.index
                        anchors.centerIn: parent
                        font.family: "Courier New"
                    }
                }
            }
        }

        // 格子定位器
        Grid
        {
            anchors.right: parent.right
            anchors.rightMargin: 5
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 5
            spacing: 5

            Repeater
            {
                model: 15
                Rectangle
                {
                    width: 40
                    height: 40
                    color: getColor()
                    function getColor()
                    {
                        let tColor = "green";
                        switch(Positioner.index%5)
                        {
                        case 0:tColor = "red";break;
                        case 1:tColor = "yellow";break;
                        case 2:tColor = "blue";break;
                        case 3:tColor = "pink";break;
                        }
                        return tColor;
                    }

                    Text
                    {
                        text: parent.Positioner.index+1
                        anchors.centerIn: parent
                        font.family: "Courier New"
                    }
                }
            }
        }

        // 自适应定位器
        Flow
        {
            anchors.right: parent.right
            anchors.rightMargin: 5
            anchors.top: parent.top
            anchors.topMargin: 5
            spacing: 5
            width: 300

            Repeater
            {
                /*
                    如果模型是字符串列表或对象列表,
                    则委托还将暴露于保存字符串或对象数据的只读modelData属性
                */
                model: ["apples","oranges","pears","banana","watermelon","tomato","cucumber"]
                Rectangle
                {
                    width: 110
                    height: 40
                    color: getColor()
                    Text
                    {
                        anchors.centerIn: parent
                        text: modelData
                        font.family: "courier new"
                    }

                    function getColor()
                    {
                        let tColor = "green";
                        switch(Positioner.index%5)
                        {
                        case 0:tColor = "red";break;
                        case 1:tColor = "yellow";break;
                        case 2:tColor = "blue";break;
                        case 3:tColor = "pink";break;
                        }
                        return tColor;
                    }
                }
            }
        }
    }
}

关注

笔者 - jxd

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

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

相关文章

【数据结构和算法】寻找数组的中心下标

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列…

SpringSecurity6 | 退出登录后的JSON处理

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringSecurity6 ✨特色专栏: MySQL学习 🥭本文内容:SpringSecurity6 | 退出登录后的JSON处理 📚个人知识库: Leo知识库,欢…

【Vue3快速上手】

Vue3快速上手 1 Vue3简介2 创建Vue3.0工程2.1 使用 vue-cli 创建2.2 使用 vite 创建 1 Vue3简介 github上的tags地址:https://github.com/vuejs/vue-next/releases/tag/v3.0.0Vue3带来了: 1> 性能的提升:打包大小减少41%;初次…

[2023]Java后台开发工程师笔试题

这次试卷考察的都是偏基础的,而且没有编码题,很喜欢这家公司考察的方式,没有刻意求难,而是重基础,希望能达到这家公司的面试环节!如果能拿到offer那就大大的好!记录的主要是我不太会的 目录 单选…

mongodb聚合_删除_可视化工具

3.5 MongoDB中limit和skip MongoDB Limit() 方法 如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。limit()方法基本语法如下所示:…

蓝桥杯2020年5月青少组Python程序设计国赛真题

1、 上边是一个算法流程图,最后输出的b的值是() A.377 B.987 C.1597 D.2584 2、 3、如果整个整数X本身是完全平方数,同时它的每一位数字也都是完全平方数我们就称X 是完美平方数。前几个完美平方数是0、1、4、9、49、100、144......即第1个完美平方数是0,第2个是 1,第3个…

【AI】人工智能爆发推进器之卷积神经网络

目录 一、什么是卷积神经网络 1. 卷积层(Convolutional Layer) 2. 激活函数(Activation Function) 3. 池化层(Pooling Layer) 4. 全连接层(Fully Connected Layer) 5. 训练过程…

STM32 cubeMX 光敏电阻AD转化实验

文章代码使用 HAL 库。 文章目录 前言一、光敏电阻介绍二、光敏电阻原理图解析三、ADC采样介绍1. 工作原理:2. ADC精度: 四、STM32 cubeMX配置ADC采样五、代码编写总结 前言 实验开发板:STM32F051K8。所需软件:keil5 ,…

从GPU到屏幕渲染

一、Graphics Processing Unit GPU为图形处理单元; 一般将GPU与CPU放在一起对比: CPU的强项是做逻辑运算,GPU的强项是做数学运算和图形渲染; 双方都是运算处理器,从结构上来讲都包含运算单元ALU、控制单元Control和缓…

【笔记】Spring的事务是如何回滚的/Spring的事务管理是如何实现的

Spring的事务是如何回滚的/Spring的事务管理是如何实现的 数据库(Spring事务) 1、建立连接、开启事务(准备工作) 2、进行sql操作(业务逻辑) 3、执行成功,则commit; 执行失败&#x…

【LLM】Qwen学习

安装依赖 pip install transformers4.32.0 pip install accelerate pip install tiktoken pip install einops pip install transformers_stream_generator0.0.4 pip install scipy pip install auto-gptq optimum使用 参见官方介绍 模型 模型结构 QwenBlock 打印模型 ##…

sparkstreamnig实时处理入门

1.2 SparkStreaming实时处理入门 1.2.1 工程创建 导入maven依赖 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.12</artifactId><version>3.1.2</version> </dependency> <dependency…

K8S的二进制部署

K8S的源码包部署 搭建准备&#xff1a; k8smaster01&#xff1a;20.0.0.32 kube-apiserver kube-controller-manager kube-scheduler etcdk8smaster02&#xff1a;20.0.0.33 kube-apiserver kube-controller-manager kube-scheduler node节点01&#xff1a;20.0.0.34 …

Jenkins集成allure测试报告

前言 Allure框架是一个功能强大的自动化测试报告工具&#xff0c;不仅支持多种编程语言&#xff0c;而且能够完美的与各种集成工具结合&#xff0c;包括Jenkins&#xff0c;TeamCity&#xff0c;Bamboo&#xff0c;Maven等等&#xff0c;因此受到了很多测试人员的青睐&#xff…

Redis7快速入门

Docker安装Redis 指定密码&#xff1a; docker run --restartalways -p 6379:6379 --name redis -d redis:7.0.12 --requirepass zhangdapeng520不指定密码&#xff1a; docker run --restartalways -p 6379:6379 --name redis -d redis:7.0.12在真实的开发中&#xff0c;如…

【c++】入门1

c关键字 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污染&#xff…

C/C++图形化编程(1)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 信念是一把无坚不摧的利刃&#xff01…

每日一题-----逆序字符串

大家好我是Beilef&#xff0c;在一个美好的下午我意外接触到编程并且产生了兴趣&#xff0c;哈哈我要努力成为一个跨界者&#xff0c;让我们一起加油吧O(∩_∩)O 文章目录 目录 文章目录 前言 大家好请上车 一、逆序字符串 题⽬描述&#xff1a; 输⼊⼀个字符串&#xff0c;写…

Node.js版本对比

目录 1. node版本与Npm版本对照表 2. node版本与node-sass版本对照表 3. node-sass与sass-loader版本对照表 1. node版本与Npm版本对照表 以往的版本 | Node.js 下面显示最新的对应内容&#xff0c;如果需要查找历史版本&#xff0c;可以进入上面的页面查询 VersionLTSDateV8np…

使用CRA(create-react-app)初始化一个完整的项目环境(该初始化项目已上传到本文章的资源)

1. 整理项目结构&#xff0c;项目目录结构大致划分如下&#xff1a; 2. 安装sass 安装sass开发环境, 注意&#xff1a;使用的文件后缀名要用.scssnpm i sass -D3. 安装Ant Design npm i antd --save 4. 配置基础路由Router&#xff08;具体可参考ReactRouter使用详解&#x…