QML笔记(五)之QML键盘事件

一.前言
上篇文章了解了QML的鼠标事件的获取,这篇文章就记录一下获取QML的键盘事件

二.键盘事件
需要用一个Rectangle转起来,然后必须设施这两个属性

        Keys.enabled: true  // 不设置按键使能,获取不了按键事件
        focus: true         // 不设置焦点,获取不了键盘事件

1.通用键盘事件Keys.onPressed,可以监测键盘上任意按键的按下,并获取对应的信息,注意event.text只能打印出数字和字母以及部分字符

Keys.onPressed: {
            console.log("key:"+event.key)
            console.log("nativeScanCode:"+event.nativeScanCode)
            console.log("text:"+event.text)
            console.log("******************************")
        }

在这里插入图片描述
2.专用键盘事件
QML提供只监测某一类按键按下的按键,例如Esc tab等按键,QML提供以下的专用按键
在这里插入图片描述
在这里插入图片描述
楼主测试以下几个按键,但是发现了几个问题,可以看一下注释

   Keys.onAsteriskPressed: {
            console.log("*键按下")
        }
        // 无效果
        Keys.onBackPressed: {
            console.log("回退按按下")
        }

        //
        Keys.onTabPressed: {
            console.log("tab键按下")
        }
        Keys.onSpacePressed: {
            console.log("空格键按下")
        }
        // 大键盘的回车
        Keys.onReturnPressed:  {
            console.log("回退键按下")
        }
        Keys.onEscapePressed: {
            console.log("Esc键按下")
        }

        // 小键盘的回车
        Keys.onEnterPressed: {
            console.log("回车键按下")
        }
        Keys.onBacktabPressed: {
            console.log("Shift+tab")
        }
        Keys.onMenuPressed: {
            console.log("onMenuPressed")
        }

3.完整QML

import QtQuick 2.0
import QtQuick.Window 2.0
import QtQuick.Controls 2.1

Window{
    visible: true
    width: 640
    height: 480
    title: qsTr("QML键盘事件")

    Rectangle{
        id:key_rect11
        anchors.centerIn: parent
        width: 200
        height: 200
        color: "#526396"
        radius: 15
        Keys.enabled: true  // 不设置按键使能,获取不了按键事件
        focus: true         // 不设置焦点,获取不了键盘事件
        Keys.onPressed: {
            console.log("key:"+event.key)
            console.log("nativeScanCode:"+event.nativeScanCode)
            console.log("text:"+event.text)
            console.log("******************************")
        }
        Keys.onAsteriskPressed: {
            console.log("*键按下")
        }
        // 无效果
        Keys.onBackPressed: {
            console.log("回退按按下")
        }

        //
        Keys.onTabPressed: {
            console.log("tab键按下")
        }
        Keys.onSpacePressed: {
            console.log("空格键按下")
        }
        // 大键盘的回车
        Keys.onReturnPressed:  {
            console.log("回退键按下")
        }
        Keys.onEscapePressed: {
            console.log("Esc键按下")
        }

        // 小键盘的回车
        Keys.onEnterPressed: {
            console.log("回车键按下")
        }
        Keys.onBacktabPressed: {
            console.log("Shift+tab")
        }
        Keys.onMenuPressed: {
            console.log("onMenuPressed")
        }
      }
   }

四.其他
以上仅是楼主学习过程中的一个记录,不全面也不一定都百分百正确,不喜勿喷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值