Qml-Item的函数使用

Qml-Item的函数使用

Item的提供了一些函数用于处理item之间父子关系,焦点链,以及item之间的坐标转换,本文重点示范item之间的坐标转换

Item的函数

  1. 函数childAt(real x,real y) :在item所在坐标系中,返回点point(x,y)处的第一个可视元素;
  2. 函数bool contains(point point) :在item所在坐标系中,点point是否在item中
  3. 函数point mapFromItem(Item item1, point p) :有4个重载函数,将item1对象中的 p点,转换到当前对象中对应点。src:item1, dst:当前对象
  4. 函数point mapToItem(Item item1, point p) :有4个重载函数,将当前对象中的 p点,转会到item1中应点。src:当前对象, dst:item1
  5. 函数** point mapFromGlobal(real x, real y)**: 将全局点point(x,y) 转换到当前对象中对应的点
  6. 函数point mapToGlobal(real x, real y): 将当前对象中点point(x,y) 转换到全局坐标系中对应的点

Item函数使用实例代码

在Rectangle中方一个MouseArea 和 两个子Rectangle,然后根据鼠标点击,调用Item公用函数,代码如下:

	import QtQuick

//验证Item中公用方法
Item{

    height: 480
    width: 320

    Rectangle{
        id:idRecPar
        x:10
        y:10
        width: 200
        height:200

        MouseArea{
            anchors.fill: parent

            onClicked:(mouse)=> {
                console.log("mouseX = " + mouseX + " mouseY = " + mouseY + " .x = " + mouse.x +" .y = " + mouse.y);

                var item = parent.childAt(mouse.x,mouse.y);                         //childAt() 获取在item坐标系中点(x,y)处的第一个子对象
                if(item === null)
                {
                    console.log("is null");
                    return;
                }
                //else
                    //console.log("clicked item ",item.id);
                if(item === idRecChild1)
                {
                  console.log("is child1");
                }
                else if(item === idRecChild2){
                    console.log("is child2");
                }

                var point2 = parent.mapToItem(idRecChild1, mouseX,mouseY);        //parent坐标系中点(x,y)转换到idRecChild1对象的坐标系中对应的点
                console.log("point 2 = ",point2);
                if(idRecChild1.contains(point2)){
                    console.log("in idRecChild1");
                    //point2 转到父对象中
                    var point3 = parent.mapFromItem(idRecChild1,point2);            //将idRecChild1中point2 点,转化到parent坐标系中对应点
                    console.log("point3 = ",point3);
                    if(point3.x === mouse.x && point3.y === mouse.y)
                    {

                    }
                }

                //发现mapToItem 和 mapFromItem, 浮点坐标可能转换出来都是浮点整数了,如果进行相应的 ===判断,可能出错
                var global1 = parent.mapToGlobal(mouse.x,mouse.y);                  //转为全局坐标
                var point4 = idRecChild1.mapFromGlobal(global1);
                console.log("global1 = ",global1," point 4 = ",point4);
                if(point4 === point2)
                {

                }

            }
        }

        Rectangle{
            id:idRecChild1
            anchors.top: parent.top
            anchors.left: parent.left
            anchors.margins: 10
            width: 80
            height:80
            color:"lightgreen"
        }

        Rectangle{
            id:idRecChild2
            anchors.top: parent.top
            anchors.right: parent.right
            anchors.margins: 10
            width: 80
            height:80
            color:"lightblue"
        }
    }
}

Item函数运行输出如下

此处有个特殊现象:mapToItem()mapFromItem(), 浮点坐标可能转换出来都是浮点整数了,如果进行相应的 ===判断,可能出错;

在这里插入图片描述

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

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

相关文章

python pip安装requirements.txt依赖与国内镜像

python pip安装requirements.txt依赖与国内镜像 如果网络通畅,直接pip安装依赖: pip install -r requirements.txt 如果需要国内的镜像,可以考虑使用阿里的,在后面加上: -i http://mirrors.aliyun.com/pypi/simple --…

(四)Python标识符与保留字

一、标识符规则 标识符用来识别变量、函数、类、模块以及对象的名称。 Python标识符可包括英文字母、数字以及下划线。 限制如下: 1、标识符第一个字符必须是字母表中字母或者下划线,变量名称间不得有空格; 2、Python标识符有大小写之分…

【SRE系列--DNS跨域转发】

1.DNS原理 1.1 简介 DNS(Domain Name Service的缩写)的作用就是根据域名查出IP地址。IP地址是由32位二进制数字组成,人们很难记住这些IP,相反,大家愿意使用比较容易记忆的主机名字。而电脑在处理IP数据报文时,是使用IP地址的&am…

高阶数据结构与算法——红黑树の奥秘

1.认识红黑树 1.1红黑树的概念 红⿊树是⼀棵⼆叉搜索树,他的每个结点增加⼀个存储位来表⽰结点的颜⾊,可以是红⾊或者⿊⾊。通过对任何⼀条从根到叶⼦的路径上各个结点的颜⾊进⾏约束,红⿊树确保没有⼀条路径会⽐其他路径⻓出2倍&#xff0c…

JDK安装环境配置保姆间教程

文章介绍了Java编程语言的基本知识,包括其创始人和发布年份,然后详细阐述了如何下载和安装JDK,以及如何配置JAVA_HOME和Path环境变量,以确保Java开发环境的正确设置。最后,作者提到在JDK1.5以后的版本中,无…

Python基础语法条件

注释 注释的作用 通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。 注释的分类及语法 注释分为两类:单行注释 和 多行注释。 单行注释 只能注释一行内容,语法如下…

离宝安羊台山登山口最近的停车场探寻

石岩龙眼山矿泉水厂有停车场,这个是距离宝安羊台山登山口最新的停车场了,但是停车位数量没有附近的大眼山停车场多。 石岩龙眼山矿泉水厂停车场的收费标准如下: 序号 收费项目 收费标准 1 小车临时停放 首小时10元 每增加1小时加收3元 3…

如何有效进行主机加固?深信达MCK提供答案

在数字化时代,企业面临的网络安全威胁日益严峻,尤其是勒索病毒等恶意软件的攻击,给企业带来了巨大的挑战。为了有效应对这些威胁,企业需要采取全面的网络安全防护措施,其中主机加固成为了关键的一环。深信达的MCK主机加…

dvwa:文件包含、文件上传

文件包含 本地文件包含(敏感信息泄露)和远程文件包含(命令执行) 本地文件包含一般包含一些本地的敏感文件,如:/etc/passwd或/etc/shadow等 远程文件包含能使得服务器代码执行,如包含黑客vps的…

uniapp引入ThorUI的方法

1、下载文件 2、复制相应的文件除了pages 3、往项目中复制即可 4、引入即可实现 5、添加easycome自动引入

交易所开发:构建安全、高效、可靠的数字资产交易平台

数字资产交易平台是加密市场中连接用户与数字货币的重要枢纽。开发一个安全、高效、可靠的交易所,不仅需要综合考虑技术架构、安全策略、用户体验等方面,还需严格遵循法规要求以确保合规性。本文总结了交易所开发的关键要素,包括其类型、核心…

16年408计算机网络

第一题: 解析: 首先我们要清楚R1,R2,R3是路由器(网络层),Switch是以太网交换机(数据链路层),Hub是集线器(物理层)。 由此可见路由器实现的最高功能层是3层&am…

【兼容多端】UNIAPP popper气泡弹层vue3+typescript unibest

最近要实习一个泡泡弹层。看了下市场的代码,要么写的不怎么好,要么过于复杂。于是拿个轮子自己加工。200行代码撸了个弹出层组件。兼容H5和APP和小程序。 功能: 1)只支持上下左右4个方向的弹层不支持侧边靠齐 2)不对屏幕边界适配 3)支持弹层…

【C语言】你不知道的知识小盲区——柔性数组

文章目录 一、什么是柔性数组二、柔性数组的特点三、柔性数组的使用四、柔性数组的优势 一、什么是柔性数组 也许你从来没有听说过柔性数组(flexible array)这个概念,但是它确实是存在的。在C99标准中,如果结构体的最后一个成员是…

【jQuery】 jQuery基础及选择器介绍(基本选择器 层次选择器 属性选择器 过滤选择器)

文章目录 jQuery基础1. 优势2. 版本3. 基本语法4. 选择器基本选择器层次选择器属性选择器过滤选择器基本过滤选择器可见性过滤选择器 注意事项 jQuery基础 jQuery 是一个功能强大且易于使用的 JavaScript 库,它极大地简化了前端开发的工作。无论是 DOM 操作、事件处…

健康推荐系统:SpringBoot技术实现

3系统分析 3.1可行性分析 通过对本基于智能推荐的卫生健康系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本基于智能推荐的卫生健康系统采用SSM框架&#…

在Java程序中监听mysql的binlog

文章目录 1、背景2、mysql-binlog-connector-java简介3、准备工作1、验证数据库是否开启binlog2、开启数据库的binlog3、创建具有REPLICATION SLAVE权限的用户4、事件类型 eventType 解释1、TABLE_MAP 的注意事项2、获取操作的列名 5、监听binlog的position1、从最新的binlog位…

HCIP-HarmonyOS Application Developer 习题(十)

1、HarmonyOS设备A上的应用通过调用分布式任务调度的能力continuesbility,向设备B的应用发起跨端迁移,此过程属于跨端迁移中的哪个流程? A、流转准备 B、流转进行 C、流转结束 D、流转完成 答案:D 分析: 2、为了帮助用户通过全局…

软件测试工程师面试整理 —— 操作系统与网络基础!

在软件测试中,了解操作系统和网络基础知识对于有效地进行测试工作至关重要。无论是在配置测试环境、调试网络问题,还是在进行性能测试和安全测试时,这些知识都是不可或缺的。 1. 操作系统基础 操作系统(Operating System, OS&am…