Qt Quick事件处理

    xiaoxiao2021-04-14  66

    MouseArea 鼠标句柄交互 1MouseEvent鼠标事件2WheelEvent滚轮事件3DragEvent拖放事件 键盘事件KeyEvent 1导航键KeyNavigation 定时器Timer

    自己博客中的代码可以在https://github.com/xixihaha331/QT_Repository中获取 事件处理

    MouseArea 鼠标句柄交互 MouseEvent鼠标事件 WheelEvent滚动事件 DrangEvent拖放事件 FocusScope 键盘焦点句柄 focus键盘事件 Flickable 提供一种浏览整张图片的一部分的效果,具体看例子 Flipable 提供一个平面,可以进行翻转看他的前面或后面,具体看例子 Timer定时器

    1.MouseArea 鼠标句柄交互

    属性:

    enable;是否开启鼠标事件处理,默认为开启 pressed判断用户是否按住了鼠标按钮 onClicked 单击鼠标触发事件 onDoubleClicked双击鼠标触发事件 onPressed按下鼠标触发事件 onReleased松开鼠标触发事件 onPressaAndHold onWheel处理滚轮事件

    1.1MouseEvent鼠标事件

    属性:

    accepted属性为true来防止鼠标事件传播到下层项目 有一个mouse参数,对其进行操作判断 button/buttons获取按下的按键 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 一个小键盘按钮被按下 使用时需要将modifiers与这些特殊的按键进行按位与来判断按键 例如:mouse.modifiers & Qt.ShiftModifier

    1.2WheelEvent滚轮事件

    有一个wheel参数,对其进行操作判断 属性:

    angleDelta来获取滚轮滚动的距离,x和y坐标分别保存水平,垂直方向的增量. 例如:wheel.angleDelta.y

    1.3DragEvent拖放事件

    属性:

    drag

    import QtQuick 2.8 import QtQuick.Window 2.2 Window{ width: 800 height: 200 Rectangle{ id: rectangle1 width:100 height: 100 color: "green" border.color: "green" opacity: (800-rectangle1.x)/800 MouseArea{ anchors.fill: rectangle1 drag.target: rectangle1 drag.axis: Drag.XAxis onClicked: { if(mouse.button == Qt.LeftButton){ rectangle1.color = 'yellow' }else if(mouse.button == Qt.RightButton){ rectangle1.color = 'red' } } onDoubleClicked: { if((mouse.button == Qt.LeftButton) && (mouse.modifiers & Qt.ShiftModifier)){ rectangle1.color = 'green' rectangle1.border.color = 'black' } } onWheel: { //anchors.fill: rectangle1 if(wheel.modifiers & Qt.ControlModifier){ if(wheel.angleDelta.y > 0){ text.font.pointSize += 1 }else if(wheel.angleDelta.y < 0){ text.font.pointSize -= 1 } } } } } Text{ id: text anchors.centerIn: rectangle1 text: "QT" } }

    2.键盘事件KeyEvent

    属性:

    focus设置为true,这个项目便会获得焦点 Keys属性来进行按键处理 Keys附加属性onPressed;onReleased提供了基本的处理 event.key获取了按下的按键 accepted判断是否接收按键 isAutoRepeat判断是否是自动重复按键

    2.1导航键KeyNavigation

    用来实现使用方向键或者Tab键进行项目导航 属性:

    backtab(Shift+Tab);down;left;priority;right;tab;up

    3.定时器Timer

    属性:

    interval设置时间间隔 repeat设置是否重复触发 running: true开启定时器 当定时器触发时,会执行onTriggered()信号处理器 Timer提供一系列函数start();stop();restart()

    例子:倒计时

    import QtQuick 2.8 import QtQuick.Window 2.2 import QtQuick.Controls 1.2 Window{ width: 200 height: 200 QtObject { id:attr; property int counter; Component.onCompleted: { attr.counter = 10; } } Text { id: text anchors.horizontalCenter: parent.horizontalCenter anchors.bottom: button.top text: qsTr("倒计时") color: "blue" font.pointSize: 20 } Timer{ id: timer interval: 1000 repeat: true //running: true triggeredOnStart: true; onTriggered: { text.text = attr.counter attr.counter-- if(attr.counter < 0){ timer.stop() text.text = 'stop' } } } Button{ id: button anchors.centerIn: parent text:qsTr("start") onClicked: { attr.counter = 10 timer.start(); } } }
    转载请注明原文地址: https://ju.6miu.com/read-669592.html

    最新回复(0)