QML编程:实现一个数字软件盘的功能(二)

  通过上一节,我们已经实现了一个软键盘的功能,本节主要介绍如何实现输入数值后 edit focus焦点的向后移动,提高用户体验度。

  要想移动焦点首先需要获取当前页面的当前控件,然后遍历向后查询。
  

function itemIndex(item) {
        //获取当前控件索引
           if (item.parent === null)
               return -1
           var siblings = item.parent.children
           for (var i = 0; i < siblings.length; i++)
               if (siblings[i] === item)
                   return i
           return -1 //will never happen
       }
function nextItem(item) {
        //查找下一个控件
        if (item.parent === null)
            return null

        var index = itemIndex(item)
        var siblings = item.parent.children
        return (index < siblings.length - 1)? siblings[index + 1]: nextItem(item.parent)
    }

调用以上两个函数,我们就获取到了下一个可能存在焦点的控件,接下来调用激活焦点函数

function activeNextItem(obj, localeSpinBox){
        //激活下一个焦点控件
        if(obj){
                if(obj.nextItemInFocusChain().activeFocus===true)
                    obj.value=localeSpinBox.value;
                var nextObj=nextItem(obj);
                if(nextObj){
                    var activeObj=nextObj.nextItemInFocusChain();
                    activeObj.forceActiveFocus();
                }
        }
    }

效果图:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值