QML事件处理之鼠标事件(MouseEvent)和滚轮事件(WheelEvent)

这篇具有很好参考价值的文章主要介绍了QML事件处理之鼠标事件(MouseEvent)和滚轮事件(WheelEvent)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QtQuick的可视项目结合MouseArea获取鼠标相关事件,并通过信号和处理器与鼠标进行交互。大多数MouseArea的信号都包含了一个mouse参数,它是MouseEvent类型的,例如前面使用的mouse.accepted。在MouseEvent对象中,可以设置accepted属性为true来防止鼠标事件传播到下层的项目;通过x和y属性获取鼠标的位置;通过button或buttons属性可以获取按下的按键;通过modifiers属性可以获取按下的键盘修饰符等。这里的button可取的值有Qt.LeftButton左键、Qt.RightButton右键和Qt.MiddleButton中键;而modifiers的值由多个按键进行位组合而成,在使用时需要将modifiers与这些特殊的按键进行按位与来判断按键,常用的按键有:

  • Qt.NoModifier:没有修饰键被按下;
  • Qt.ShiftModifier:Shift键被按下;
  • Qt.ControlModifier:Ctrl键被按下;
  • Qt.AltModifier:Alt键被按下;
  • Qt.MetaModifier:Meta 键被按下;
  • Qt.KeypadModifier:一个小键盘按钮被按下。
    Rectangle {
        width: 100; height: 100
        color: "green"
        MouseArea {
            anchors.fill: parent
            acceptedButtons: Qt.LeftButton | Qt.RightButton
            onClicked: {
                if(mouse.button == Qt.RightButton)
                    parent.color = 'blue';
                else
                    parent.color ='red';
            }
            onDoubleClicked: {
                if((mouse.button == Qt.LeftButton) && (mouse.modifiers & Qt.ShiftModifier))
                    parent.color = "green"
            }
        }
    }

除了使用MouseEvent获取鼠标按键事件,还可以使用WheelEvent获取鼠标滚轮
事件。MouseArea的onWheel处理器有一个wheel参数,就是WheelEvent类型的。
WheelEvent 最重要的一个属性就是 angleDelta,可以用来获取滚轮滚动的距离,它的
x和y坐标分别保存了水平和垂直方向的增量。滚轮向上或向右滚动返回正直,向下或
向左滚动返回负值。对于大多数鼠标,每当滚轮旋转一下,默认是15°,此时angleDelta的
值就是15x8即整数1201。在下面的例子中,当按下Ctrl键的同时,滚轮向上滚动便放大
字号,向下滚动便缩小字号。文章来源地址https://www.toymoban.com/news/detail-505636.html

    Rectangle {
        width:360; height: 360
        Text {id:myText; anchors.centerIn: parent;text: "QT"}
        MouseArea {
            anchors.fill: parent
            onWheel: {
                if(wheel.modifiers& Qt.ControlModifier){
                    if(wheel.angleDelta.y > 0)
                        myText.font.pointSize += 1
                    else
                        myText.font.pointSize -= 1
                }
            }
        }
    }

到了这里,关于QML事件处理之鼠标事件(MouseEvent)和滚轮事件(WheelEvent)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js监听鼠标滚轮事件

    通过原生js监听鼠标滚轮事件 通过jquery实现鼠标滚轮事件,若ie8无法实现,降低jquery版本

    2024年02月16日
    浏览(37)
  • android鼠标滚轮事件监听方法

    2024年02月08日
    浏览(28)
  • QML鼠标事件

    QML中常用的事件有: 鼠标事件 键盘事件 拖拽事件 定时器  MouseArea是一个不可见的项目,同、通常用来和一个可见的项目配合使用来为其提供鼠标处理。鼠标处理的逻辑可以包含在MouseArea项目中 常用的属性: enabled 是否开启鼠标区域(默认为true) mouseX mouseY 保存鼠标的位置

    2024年01月20日
    浏览(25)
  • qt-C++笔记之捕获鼠标滚轮事件并输出滚轮角度增量

    code review! 在WheelWidget类中,wheelEvent函数被重写。这个函数是QWidget的一个虚函数,用于处理鼠标滚轮事件。

    2024年02月19日
    浏览(27)
  • Cesium 鼠标滚轮事件获取地图缩放等级

    Cesium 监听鼠标滚轮,滚轮每次滚动获取当前地图瓦片等级。 灵感来自:cesium获取当前地图瓦片缩放级别_右弦GISer的博客-CSDN博客_cesium 获取缩放级别 实际使用时体验并不好,最后使用监听高度的方法。

    2024年02月11日
    浏览(34)
  • [pyqt5]触发ctrl+鼠标滚轮事件

    有时候我们需要按住Ctrl+鼠标滚轮实现图像放大或者缩小,因此需要这个事件,具体看代码

    2024年02月13日
    浏览(37)
  • QT笔记——QSlider滑动条滚轮事件和点击鼠标位置事件问题

    需求:我们需要对一个滑动条 滚轮事件 和 点击到滑动条的位置 实时显示 问题:其中在做的时候遇到了很多的问题,一开始感觉很简单,现在将这些问题记录下来 ui图: 问题1:处理QSlider 滚轮事件的时候 这里有很大的问题,但是不知道原因,为什么会出现这样的原因,网上

    2024年02月01日
    浏览(30)
  • VBA combox/listbox 控件响应鼠标滚轮事件

    在vba中,我们在用户窗体中如果添加有combox控件,或者是listbox控件。正常情况下,combox 和 listbox 是不响应鼠标滚轮事件的,且默认的VBA控件中,也没有提供响应鼠标滚轮事件的方法和入口。如此以来,我们在combox/listbox 中操作选择目标选项,就只能使用滚动条来操作,严重

    2024年04月09日
    浏览(53)
  • addEventListenter 监听页面滚动事件 鼠标左键拖拉滚轮

    问题:在同一个界面需要调的接口太多,需要做懒加载 想法:监听滚动位置,到一个范围内调用对应的接口 做法1: 1、首先在整个vue文件的最外层加上 ref=\\\"scrollview\\\"和 @mousewheel=“scrollChange” 2、在methods中写下一个滚轮方法,里面具体需要做什么处理(比如到哪个位置调用哪

    2024年02月09日
    浏览(28)
  • 【QML】使用 QtQuick2的ListView创建一个列表(一)

    qtquick2版本和qtquick1版本分别提供了一个ListView组件供使用,两个组件在使用上和属性的提供上还是有比较大的差异的,因为qtquick2是新的,所以就以改版本为基础学习如何使用; 首先,要知道ListView提供了那些属性提供修改,那些是只读,各个属性的类型是啥,这些可用在Q

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包