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

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手感很不好,有时间再过来调整格式及错误


版权声明:本文为whxxiang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。