当前位置: 首页 > news >正文

QML学习笔记(十六)QML的信号参数

前言

本小节中,我们将学习处理信号参数。
什么是信号参数?我们打开帮助文档,可以看到许多信号都带有参数。
在这里插入图片描述
这里的mouse和wheel就是我们要了解的东西,我们可以通过它来获取更多的信息。
先自行创建新的工程QmlSignalParameters。

一、了解MouseEvent

查阅帮助文档,MouseEvent其实也是一种QML类型,自带有一系列属性。
在这里插入图片描述
这里最常用的就是通过mouse来获取x、y值,用来判断当前触发鼠标事件的坐标值是什么,当然这个坐标值通常是相对于MouseArea而言的。
我们简单打印一下:

Window {visible: truewidth: 640height: 480title: qsTr("QML Signal Parameters")Rectangle{id: rectIdwidth: 150height: 150color: "red"MouseArea{anchors.fill: parentonClicked: {console.log("Position x:" + mouse.x + " ,y: " + mouse.y)}}}
}

1.直接引用mouse
这里我们直接使用了mouse,就跟引用对象一样。但事实上这种引用方式不太安全,在新版Qt中正在被逐步淘汰。
为什么会是mouse?这个名字其实是这个信号的默认名,你如果不查阅接口文档其实是不确定这个名字的。
所以,一般更推荐别的方式。
2.function写法

onClicked: function(mouse){console.log("Position x:" + mouse.x + " ,y: " + mouse.y)
}

这种写法提供了更多的灵活性,我们甚至可以把mouse自行改为其他的名字,例如mouse_param:

onClicked: function(mouse_param){console.log("Position x:" + mouse_param.x + " ,y: " + mouse_param.y)
}

运行都是正常的:
在这里插入图片描述
3.箭头写法
我们还可以直接用自定义名字加箭头,来实现写法变体。

onClicked: mouse_param=>{console.log("Position x:" + mouse_param.x + " ,y: " + mouse_param.y)}

二、MouseEvent的accepted属性

MouseEvent的accepted属性实际上是一个十分常用的属性。
accepted 是接收的意思,如果设置为true,意味着这个鼠标事件已经被当前组件所接收,将不传递到父容器中的鼠标事件中。
当然,我们还要先设置一下:

propagateComposedEvents: true

这个属性代表MouseArea允许事件向下传递。
如果你希望对一些动作进行放行,让它传递到下层窗口去触发它们的事件,你可以这样做:

propagateComposedEvents: true
onPressed  : mouse.accepted = false
onReleased : mouse.accepted = false
onClicked  : mouse.accepted = false

MouseEvent还有其他的一些属性,但我觉得不怎么常用,所以也就不啰嗦了。

三、总结

本节内容比较简单,主要讲述了三种处理信号参数的方式,我们使用信号的时候不仅要学会实现信号处理器,还要知道如何引用信号参数来实现更复杂的业务需求。

http://www.dtcms.com/a/419465.html

相关文章:

  • 百度C++实习生面试题深度解析(上篇)
  • 网站培训视频建设银行淮安招聘网站
  • Http与WebSocket网络通信协议的对比
  • Docker 部署微服务项目详细步骤
  • 后端_本地缓存:零抖动的极速缓冲层
  • 【笔试强训Day02】1. ⽜⽜的快递(模拟)
  • 建设网站找哪家简洁页面心情网站
  • 广州站有高铁吗域名不变 网站改版
  • 防爬虫逆向日志爆炸,精简追踪不崩浏览器控制台
  • DevExpress WinForms v25.2新功能预览 - 即将升级富文本编辑器控件功能
  • C#知识学习-015(修饰符_4)
  • 有做分期海淘的网站吗苏州建设网站找网络公司
  • 全缓冲和行缓冲
  • 【C++语法】C++11——右值引用
  • 如何给网站做app平台网站建设 厦门
  • 鞍山网站建设工作室北京交易中心网站
  • 现代C++ Lambda表达式:最佳实践、深入理解和资源推荐
  • CUDA 内核中计算全局线程索引的标准方法
  • 刚做网站做多用户还是单用户企业建站的作用是什么
  • CUDA 13.0深度解析:统一ARM生态、UVM增强与GPU共享的革命
  • 佛山外贸网站建设咨询php网站上做微信支付功能
  • 公司网站中新闻中心怎样做优化网页设计图片怎么居中
  • 网站运营经验山东查询网站备案
  • 巴塘网站建设网站开发的论文课题
  • GuavaCache
  • 免费空间如何放网站搜索引擎优化培训免费咨询
  • LeetCode 53 最大子数字和(动态规划)
  • 如何为100Tops机器人“退烧”?世强芯片热管理方案,释放100%算力!
  • 【NodeJS】使用 NVM 安装 Node.js 22 并配置国内镜像加速
  • 边缘计算与AI:移动端设计软件的实时性能突破