FlickKey QML 类型

FlickKey QML 类型

FlickKey 是 Qt Quick Virtual Keyboard 中的一种特殊按键类型,继承自 BaseKey。它的主要特点是支持滑动(flick)手势,允许用户通过在按键上不同方向的滑动来输入额外的字符或执行不同的功能。

特性

FlickKey 最显著的特性是支持多方向滑动操作,通常用于:

  • 快速输入特殊字符
  • 实现数字与符号的快速切换
  • 在同一个键位实现多个字符的输入

属性

除了继承自 BaseKey 的所有属性外,FlickKey 还具有以下特有属性:

  • flickKeys: var - 定义滑动方向对应的字符或功能,通常是一个包含上、下、左、右四个方向映射的对象
  • flickDirection: int - 当前检测到的滑动方向
  • flickThreshold: real - 触发滑动操作的阈值距离
  • flickTimeout: int - 滑动手势识别的超时时间(毫秒)
  • activeFlickDirection: int - 当前激活的滑动方向

滑动方向常量

FlickKey 定义了以下滑动方向常量:

  • FlickKey.FlickNone: 0 - 无滑动
  • FlickKey.FlickUp: 1 - 向上滑动
  • FlickKey.FlickDown: 2 - 向下滑动
  • FlickKey.FlickLeft: 3 - 向左滑动
  • FlickKey.FlickRight: 4 - 向右滑动

信号

  • flickDirectionChanged(): 当滑动方向改变时触发
  • flickTriggered(int direction): 当滑动手势被识别触发时发出

使用示例

import QtQuick 2.15
import QtQuick.VirtualKeyboard 2.15

FlickKey {
    key: Qt.Key_7
    text: "7"
    width: 60
    height: 60
    
    flickKeys: {
        "FlickUp": {key: Qt.Key_Ampersand, text: "&"},
        "FlickDown": {key: Qt.Key_Slash, text: "/"},
        "FlickLeft": {key: Qt.Key_Less, text: "<"},
        "FlickRight": {key: Qt.Key_Greater, text: ">"}
    }
    
    onFlickTriggered: function(direction) {
        if (direction === FlickKey.FlickUp)
            console.log("向上滑动,输入 &")
        else if (direction === FlickKey.FlickDown)
            console.log("向下滑动,输入 /")
        // 其他方向处理...
    }
}

应用场景

FlickKey 在以下场景中特别有用:

  1. 手机数字键盘:数字键上滑动输入特殊符号
  2. 紧凑型键盘:减少按键数量,同时保持输入多种字符的能力
  3. 多语言键盘:快速访问重音字符和特殊字母
  4. 单手操作优化:通过滑动减少手指移动距离

自定义 FlickKey 示例

创建一个数字与符号组合的 FlickKey:

FlickKey {
    id: numberKey
    key: Qt.Key_1
    text: "1"
    
    // 在四个方向上定义不同的符号
    flickKeys: {
        "FlickUp": {key: Qt.Key_Exclam, text: "!"},
        "FlickDown": {key: Qt.Key_At, text: "@"},
        "FlickLeft": {key: Qt.Key_NumberSign, text: "#"},
        "FlickRight": {key: Qt.Key_Dollar, text: "$"}
    }
    
    // 视觉反馈
    Rectangle {
        id: directionIndicator
        visible: parent.activeFlickDirection !== FlickKey.FlickNone
        color: "lightblue"
        opacity: 0.5
        width: parent.width / 3
        height: parent.height / 3
        
        // 根据滑动方向调整位置
        states: [
            State {
                when: numberKey.activeFlickDirection === FlickKey.FlickUp
                PropertyChanges { target: directionIndicator; y: 0 }
            },
            State {
                when: numberKey.activeFlickDirection === FlickKey.FlickDown
                PropertyChanges { target: directionIndicator; y: parent.height - height }
            }
            // 其他方向状态...
        ]
    }
}

通过 FlickKey,可以显著增强虚拟键盘的输入效率,尤其是在屏幕空间有限的移动设备上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七贤岭↻双花红棍↺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值