Qt移动开发之 back(返回)键处理

本文探讨了Qt Quick Controls 2中Dialog组件的使用挑战,特别是在处理返回键行为时的问题。通过差异化标志和监听Keys.onBackPressed与Keys.onReleased事件,实现了在有Dialog存在时避免关闭当前页面的功能。

Qt的移动开发即使在如今也不算完善,所以遇到坑是很正常的。不完善归完善,qml在界面的开发效率真的是令人难以拒绝。其中Qt Quick Controls 2里面的dialog使用起来有个问题,因为Qt本身绑定了dialog的取消确定信号,所以返回键按下的时候,dialog关了,当前页面也退出了,之前开发的时候当做技术债。现在有时间处理一下。

Qt Keys back键点击后  有按下和释放两个信号,按下的时候如果有dialog则不会触发按下的信号,而释放的信号与dialog无关。居于此我便做了差异化标志来实现。

main.qml

property bool unDialog:false

  Keys.onBackPressed():{
      unDialog = true
 }

Keys.onReleased():{

    if(!event.accepted && currentPage.onKeyBack && unDialog){

    currentPage.onKeyBack(event)

}

}

 

sub.qml

function onKeyBack(event){

    if(event.types == keys.back){

//to do some thing   

event.accepted = true

}

}

Dialog{

onRejected:{ //需要调用输入法的dialog

if(Qt.inputmethod.visible == true){

    dialog.open()

}

}

}

 

都是纯手敲的代码,感觉离开ide手感很不好,有时间再过来调整格式及错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值