QT Quick QML入门笔记(五)处理鼠标和键盘事件

上一章笔记链接:QT Quick QML入门笔记(四)锚(anchors)布局

1. 鼠标事件MouseArea

鼠标事件MouseArea常用元素:

● acceptedButtons  指定处理哪个按键,如LeftButton 、Qt.RightButton等
● clicked
● doubleClicked
● pressed
● released
● MouseEvent

处理鼠标事件的实例:

import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Controls 1.2

///鼠标事件
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    //中间对象
    Text{
        id:hello;
        anchors.centerIn: parent;   //处在Window中央
        font.pixelSize: 50;        //像素大小
    }
    
    MouseArea {
        //父元素的整个区域都能触发MouseArea事件
        anchors.fill: parent;
        //接收左键和右键
        acceptedButtons: Qt.LeftButton | Qt.RightButton;
        onClicked: {
            if(mouse.button === Qt.LeftButton){
                hello.text = "leftButton";
            }else{
                hello.text = "rightButton";
            }
        }
        onDoubleClicked: {
            if(mouse.button === Qt.LeftButton){
                hello.text = "double leftButton";
            }else{
                hello.text = "double rightButton";
            }
        }
    }
}

运行结果:

当左键和右键分别双击的时候,结果如下:
在这里插入图片描述 在这里插入图片描述

2. Keys键盘事件

处理Keys键盘事件的实例:

//接上面代码
///鼠标与键盘事件
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    //中间对象
    Text{
        id:hello;
        font.pixelSize: 50;  //像素大小

        Keys.onLeftPressed: x -= 10;
        Keys.onRightPressed: x += 10;
        Keys.onUpPressed:  y -= 10;
        Keys.onDownPressed: y += 10;
        focus: true;      // 只有焦点的Item才能处理按键事件
        text: "Hello World";
    }
}

keys键盘只能附加在其它属性上,如上Keys附加在Text上。当输入键盘的上下左右的时候,文字x y位置发生改变。

附加属性和附加信号处理程序是使对象能够使用其他属性或信号处理程序进行注释(annotate)的机制

Item 可以通过附加属性 Keys 来处理按键。Keys 对象是 Qt Quick 提供的,专门供 Item 处理按键事件的对象。它定义了很多针对特定按键的信号,比如 onReturnPressed ,还定义了更为普通的 onPressed 和 onReleased 信号,一般地,你可以使用这两个信号来处理按键(请对照 Qt C++ 中的 keyPressEvent 和 keyReleaseEvent 来理解)。它们有一个名字是 event 的 KeyEvent 参数,包含了按键的详细信息。如果一个按键被处理, event.accepted 应该被设置为 true 以免它被继续传递。<

常见按键信号如下:

● enterPressed/ retrunPressed
● pressed/ released
● leftPressen/ rightPressed /upPressed/ dowmPressed     //上述已使用
● digit[0~9] Pressed
● spacePressed/ deletePressed /escapePressed
● KeyEvent

参考链接:
QML中的附加属性
Qt Quick 简单教程

发布了14 篇原创文章 · 获赞 9 · 访问量 1571

猜你喜欢

转载自blog.csdn.net/qq_16504163/article/details/104979336