示例一:按键事件处理

目标

现在要实现以下功能:
敲击键盘的空格键时,在界面上显示敲击次数

步骤

  1. 创建一个Text控件,指定id,位置,text内容,以及可以保存次数的属性:
import QtQuick
import QtQuick.Controls

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

    Text {
        id: text
        x: 12; y: 12

        property int spacePressCount
        text: "space key pressed " + spacePressCount + " times"
        font.pixelSize: 14
    }

}

效果如下:
在这里插入图片描述
由于Text类型没有提供按键相关的函数,故从它的父类型找,它的父类型是Item,从Item的文档中可以看到事件处理相关的函数:
链接: https://doc.qt.io/qt-6.5/qml-qtquick-item.html
进一步找到Keys类型的文档,可以看到按键相关的信号函数:
https://doc.qt.io/qt-6.5/qml-qtquick-keys.html#spacePressed-signal
在这里插入图片描述
于是在qml中加入以下代码:

 Keys.onSpacePressed: {
            increment()
        }

        function increment() {
            spacePressCount = spacePressCount + 1
        }

此时按下键盘空格键,仍然没有反应,为什么呢?
原来Item中有一个focus属性,设置为true时才能获得焦点。
在这里插入图片描述
增加focus:true之后,按下空格键,即可不断增加按键次数。
还可以再增加一个onTextChanged属性,可在text发生变化的时候将其打印到控制台:

      onTextChanged: function(text) {
        console.log("text changed to: ", text)
        }

最终效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值