MouseArea元素

常用信号

  • onClicked,鼠标点击
  • onPressed,鼠标按下
  • onReleased,鼠标释放

 

import QtQuickWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectwidth: 100height: 100color:"red"MouseArea{anchors.fill:parent//鼠标点击信号onClicked: {console.log("鼠标点击")}//鼠标按下信号onPressed:{console.log("鼠标按下")}//鼠标释放信号onReleased: {console.log("鼠标释放")}}}
}

acceptedButtons属性

该属性可以指定触发信号的按钮(默认为左键触发)

//指定左键和右键和滚轮都可以触发信号
acceptedButtons: Qt.LeftButton|Qt.RightButton|Qt.MiddleButton

既然多个键都可以触发信号,那么就需要判断是哪个键按下了

利用pressedButtons属性&对应的按钮

//若返回1,则对应按钮按下,否则返回0
var ret1=pressedButtons&Qt.LeftButton

 

import QtQuickWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectwidth: 100height: 100color:"red"MouseArea{anchors.fill:parent//指定可以触发信号的按钮acceptedButtons: Qt.LeftButton|Qt.RightButton|Qt.MiddleButton//鼠标按下信号onPressed:{//如何区分按下的按钮:利用pressedButtons属性&对应的按钮//若返回1,则对应按钮按下,否则返回0var ret1=pressedButtons&Qt.LeftButton;var ret2=pressedButtons&Qt.RightButton;if(ret1){console.log("左键按下");}if(ret2){console.log("右键按下");}}}}
}

ContainsMouse属性和ContainsPress属性

ContainsMouse属性:判断鼠标是否在鼠标区域内

  • 如果hoverEnable属性为false,那么只有鼠标按下,ContainsMouse才会为true
  • 如果hoverEnable属性为true,那么只要鼠标一进入鼠标区域,ContainsMouse就会为true

ContainsPress属性:判断鼠标是否在鼠标区域内且是否按下了

  • ContainsPress属性:判断鼠标是否在鼠标区域内且是否按下了

import QtQuickWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectwidth: 100height: 100color:"red"MouseArea{anchors.fill:parent//鼠标只要一进入鼠标区域,ContainsMouse属性就会变为truehoverEnabled: true;onContainsMouseChanged: {console.log("ContainsMouseChanged")}onContainsPressChanged:{console.log("ContainsPressChanged")}}}
}

cursorShape属性

可以改变鼠标进入这个鼠标区域内的鼠标形状,有很多种,官方文档里有

import QtQuickWindow {width: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectwidth: 100height: 100color:"red"MouseArea{anchors.fill:parent//将鼠标形状设置为小手cursorShape: Qt.PointingHandCursor}}
}

drag属性

可以设置drag属性,来拖动鼠标区域,从而拖动其父元素

 

 

import QtQuickWindow {id:main_windowwidth: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectwidth: 100height: 100color:"red"MouseArea{anchors.fill:parent//拖动属性drag.target: rect//拖动谁drag.axis: Drag.XAxis//可以沿着x轴方向拖动(也可以沿着y,也可以沿着x和y任意拖动)drag.minimumX: 0//X轴方向上可以拖动的范围的最小值drag.maximumX: main_window.width-rect.width//X轴方向上可以拖动的范围的最大值//若Rectangle里面还有子元素,子元素里也有MouseArea,则子元素的MousArea也继承相关拖动属性drag.filterChildren: true}}
}

mouseX和mouseY属性

可以获取鼠标在鼠标区域内的x值和y值

  • 不开启hoverEnable属性,鼠标按下,mouseX和mouseY的值才会改变
  • 开启hoverEnable属性,鼠标在鼠标区域内移动,mouseX和mouseY的值就会改变

import QtQuickWindow {id:main_windowwidth: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectwidth: 100height: 100color:"red"MouseArea{anchors.fill:parent//开始hover属性,只要鼠标在鼠标区域内移动,//不需要按下,鼠标的mouseX和mouseY就会改变hoverEnabled: trueonMouseXChanged: {console.log("x:",mouseX,"y:",mouseY);}}}
}

onPressAndHold信号和pressAndHoldInterval属性

有时候鼠标长按,才做某些操作

pressAndHoldInterval可以设置这个长按的时长

比如长按2s后,颜色变化

import QtQuickWindow {id:main_windowwidth: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:rectwidth: 100height: 100color:"red"MouseArea{anchors.fill:parent//长按的所需的事件设为2spressAndHoldInterval: 2000onPressAndHold: {rect.color="green";}}}
}

propagateComposedEvents属性

主要是控制父子元素堆叠时,点击范围较小的子元素,该信号也能够传到父元素的MouseArea

 

import QtQuickWindow {id:main_windowwidth: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle{id:fatherwidth: 300height: 300color:"red"MouseArea{anchors.fill:parentonClicked: {console.log("red clicked");}}Rectangle{id:sonwidth: 100height: 100color:"green"MouseArea{anchors.fill:parent//为true,信号能够传到父元素的MouseAreapropagateComposedEvents: true;onClicked: (mouse)=>{console.log("green clicked");//还需要mouse的accepted属性置为false,信号才能够传到父元素的MouseAreamouse.accepted=false;}}}}
}

 学习链接:https://github.com/0voice

 

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

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

相关文章

视频监控平台是如何运作的?EasyCVR视频汇聚平台的高效策略与实践

随着科技的飞速发展,视频监控平台在社会安全、企业管理、智慧城市构建等领域发挥着越来越重要的作用。一个高效的视频监控平台,不仅依赖于先进的硬件设备,更离不开强大的视频处理技术作为支撑。这些平台集成了多种先进的视频技术,…

Redis集群_cluster

cluster集群 cluster翻译就是集群,所以cluster集群也叫做redis集群相比于哨兵模式,cluster集群能支持扩容,并且无需额外的节点来监控状态,所以使用这种模式集群的系统会用的更多些redis cluster采用的是去中心化网络拓扑架构&…

git push : RPC failed; HTTP 400 curl 22 The requested URL returned error: 400

git push 出现RPC failed; HTTP 400 curl 22 The requested URL returned error: 400 问题 git push Enumerating objects: 11, done. Counting objects: 100% (11/11), done. Delta compression using up to 8 threads Compressing objects: 100% (10/10), done. error: RPC …

漫画元素检测系统源码分享

漫画元素检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

【开源分享】vsomeip 安装、编译、运行步骤笔记

文章目录 1. 摘要2. 安装、编译2.1 开发环境说明2.2 安装依赖2.3 获取代码2.4 编译代码2.5 安装 3. 测试验证参考 1. 摘要 本文主要描述 vsomeip 的安装、编译与运行步骤。下载源码,安装必要依赖,如Boost和CMake。通过CMake配置编译 vsomeip 库&#xf…

【C++】unordered系列

前言: 在C11及以后的标准中,unordered容器是标准模板库(STL)的一部分,提供了高效的数据结构选项,适用于需要快速查找和插入操作的场景。 unordered通常与关联容器一起使用,特别是unordered_map和…

详解HTTP/HTTPS协议

HTTP HTTP协议全名为超文本传输协议。HTTP协议是应用层协议,其传输层协议采用TCP协议。 请求—响应模型 HTTP协议采用请求-响应模型,通常由客户端发起请求由服务端完成响应。资源存储在服务端,客户端通过请求服务端获取资源。 认识URL 当…

01,大数据总结,zookeeper

1 ,zookeeper :概述 1.1,zookeeper:作用 1 ,大数据领域 :存储配置数据   例如:hadoop 的 ha 配置信息,hbase 的配置信息,都存储在 zookeeper 2 ,应用领…

TDengine 与飞腾腾锐 D2000 完成兼容互认证,推动国产软硬件深度融合

在国家信息安全和自主可控技术日益受到重视的背景下,国产软硬件的发展已成为推动数字经济的重要力量。随着全球科技竞争加剧,企业在选择技术解决方案时,越来越倾向于采用国产产品以降低对外部技术的依赖。这一趋势不仅是为了确保数据安全与隐…

信息安全数学基础(14)欧拉函数

前言 在信息安全数学基础中,欧拉函数(Eulers Totient Function)是一个非常重要的概念,它与模运算、剩余类、简化剩余系以及密码学中的许多应用紧密相关。欧拉函数用符号 φ(n) 表示,其中 n 是一个正整数。 一、定义 欧…

模拟视频推到WVP推流列表

效果 1. wvp创建RTMP 2. 使用ffmpeg将本地的视频转为rtmp ffmpeg -re -i F:rtsp\123.mp4 -c copy -f flv rtmp://192.168.1.237:1935/cd/10001?sign=Z4Y3eYeSg

标准库标头 <bit>(C++20)学习

<bit>头文件是数值库的一部分。定义用于访问、操作和处理各个位和位序列的函数。例如&#xff0c;有函数可以旋转位、查找连续集或已清除位的数量、查看某个数是否为 2 的整数幂、查找表示数字的最小位数等。 类型 endian (C20) 指示标量类型的端序 (枚举) 函数 bit_ca…

Android权限适配

Android权限适配 动态权限 背景 从Android6.0版本开始google将权限分为普通权限和特殊权限&#xff0c;app必须在AndroidManifest.xml添加引用权限的语句。 在安装apk时安卓会将普通权限授予该app&#xff0c;但特殊权限需要运行时申请。 安卓按照权限类别分为权限组和权限…

【第36章】Spring Cloud之Seata分布式事务

文章目录 前言一、架构图1. 介绍2. 项目结构3. 功能描述 二、用例1. 准备1.1 系统表1.2 业务表1.3 初始化数据 2. 项目搭建2.1 项目结构2.2 主要依赖2.3 主要配置 三、主要业务代码1. 仓储服务1.1 controller1.2 service1.3 dao 2. 订单服务1.1 controller1.2 service1.3 dao 3…

Mac清理其他文件:释放存储空间的高效指南

每个Mac用户都可能遇到存储空间不足的问题&#xff0c;尤其是当“其他”文件积累到一定体积时。在Mac上&#xff0c;“其他”文件通常包括各种系统文件、缓存、文档以及不被归类为应用程序、照片、电影或音乐的其他类型的文件。这些文件往往不易被注意&#xff0c;但逐渐占用了…

【笔记】CCF直播:《如何在国际会议上有效交流》(2024-9-15)

目录 一、提问的勇气二、提问什么三、其他主题的报告为什么听四、会议前怎么读大量论文&#xff1f;五、workshop为什么参加&#xff1f;Poster环节&#xff1f;六、提问环节七、其他 今天听了《如何在国际会议上有效交流》的直播讲座&#xff0c;记录一些笔记。 一、提问的勇…

我又做了一个国标GB28181设备模拟器的Windows版本,让国标28181开发更简单,不用再费劲弄个摄像机来调试国标GB28181开发了

之前我搞过一个《EasyGBD国标GB28181设备端模拟器帮助测试国标GB28181平台&#xff08;EasyGBD-&#xff1e;EasyGBS&#xff09;》&#xff0c;当时&#xff0c;主要是在安卓手机上&#xff0c;用摄像机的本地摄像头来做为视频源、用摄像机的麦克风做为音频源&#xff0c;对外…

微服务网关终极进化:设计模式驱动的性能与可用性优化(四)

时间&#xff1a;2024年09月12日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 希望大家帮个忙&#xff01;如果大家有工作机会&#xff0c;希望帮小蒋推荐一下&#xff0c;小蒋希望遇到一个认真做事的团队&#xff0c;一起努力…

CefSharp_Vue交互(Element UI)_WinFormWeb应用(3)---通过页面锁屏和关机(含示例代码)

一、预览 实现功能:通过vue标题栏按钮锁屏和关机 1.1 预览 1.2 代码 锁屏代码csharp LockWorkStation() 关机代码chsharp 注意vue代码参数和此参数一致(0/1/2) 方法ExitWindowsEx()

python 读取excel

一、安装依赖&#xff1a; pandas 二、新建excel 示例数据&#xff1a;students.xlsx 三、定义类&#xff1a;student.py Student class Student:def __init__(self, name, sex):self.name nameself.sex sexdef show(self):print(f姓名&#xff1a;{self.name} 性别&#…