意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

[Qt] FocusScope的作用

来源:恒创科技 编辑:恒创科技编辑部
2024-01-29 05:55:59


如果在处理焦点变换时无法达到预期,则需要考虑引入 FocusScope 来管理 focus 事件。

FocusScope继承Item,是一个工具类组件,没有外观,一般都作为root组件出现。


[Qt] FocusScope的作用

QML中事件的传递顺序是 “从外而内,从下而上” ,这个顺序是和qml内部组件实例化顺序一致的。



Rectangle{

//截断focus事件

Rectangle{
//由于外层截断了focus,所以永远无法获取focus事件
}

Rectangle{
//由于外层截断了focus,所以永远无法获取focus事件
}

}


FocusScope{
id:root
//永远不截断focus事件,会立刻传递给自己的children,从下向上找到第一个focus属性是true的child,把focus事件传给它

Rectangle{
id:rec2
focus:true
//因为rec1设置了focus = false,所以root会把focus事件传递给rec2,有因为focus=true,所以会截断并获取事件
}

Rectangle{
id:rec1
focus:false
//因为设置了focus = false,所以截断
}

}
上一篇: [Qt] QML底层工作原理 下一篇: 手机怎么远程登录云服务器?