[基础]qml基础控件(Keys)

Keys类在QtQuick中用于处理Item的按键事件,提供如onReturnPressed、onEscapePressed等特定按键信号。要使用按键事件,需设置组件的focus属性为true,并启用Keys.enabled。当事件被处理时,应设置event.accepted=true以阻止事件向上层传播。文章还提到了Qt.Key_0到Qt.Key_9的键值对应关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Keys 类是 Qt Quick 提供的,专门供 Item 处理按键事件的类。它定义了很多针对特定按键的信号,比如 onReturnPressed / onEscapePressed / onDownPressed / onDigit0Pressed / onBackPressed 等等;它还定义了更为普通的 onPressedonReleased 信号,一般地,你可以使用这两个信号来处理大部分按键,它们有一个名字是 event 的 KeyEvent 参数,包含了按键的详细信息。

import QtQuick 2.15
import QtQuick.Window 2.15

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")


    Rectangle{
        anchors.fill: parent
        focus:true
        Keys.enabled: true
        Keys.onReturnPressed: Qt.quit()
        Keys.onEscapePressed: Qt.quit()
        Keys.onPressed: {
            switch(event.key){
            case Qt.Key_0:
            case Qt.Key_1:
            case Qt.Key_2:
            case Qt.Key_3:
            case Qt.Key_4:
            case Qt.Key_5:
            case Qt.Key_6:
            case Qt.Key_7:
            case Qt.Key_8:
            case Qt.Key_9:
                event.accepted=true
                name.text=event.key-Qt.Key_0
                break
            }
        }
        Text {
            id: name
            text: qsTr("text")
        }
    }
}

1.在使用按键事件的组件元素中必须设置其focus:true

2.当一个焦点获取到了按键事件并且处理后,我们应该把设置event.accepted = true。这条语句的

作用就是防止事件向上层传递也就是向父层传递,即使父对象的focus没有设置为ture;要是你不设置它,那它可能会继续传递给其他的 item ,出现一些奇奇怪怪的问题。

3.设置Keys.enabled=true,当设置为false不能响应按键事件,影响的只是当前QML对象。Keys的enabled不同于Item的enabled,后者默认为true,为false时按键事件和鼠标事件都不能响应,影响的是当前对象及所有孩子对象,这一点在使用是需要特别注意。

event.key 指代键盘按下的键

Qt.Key_0 对应48 Qt.Key_1 对应49 以此类推

参考:【QT】QML的Key事件(Keys)详解_会飞的代码UP的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值