一.前言
上篇文章了解了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")
}
}
}
四.其他
以上仅是楼主学习过程中的一个记录,不全面也不一定都百分百正确,不喜勿喷