菜鸟修炼笔记--QT--【问题】界面切换时焦点各种异常的处理
前言
由于工作需要,我最近一直在使用QT来设计界面。不幸的是,在设计界面切换的逻辑时,经常会出现各种各样的问题,比如:焦点不见、出现两个焦点、界面切换了但是焦点还在原界面。
经过多种尝试,我发现这些问题最后都归结于同一个原因:“在界面切换时没有做好焦点切换”
。为了方便之后遇到类似的问题能有所参考,本文将记录在界面切换时需要注意的一些事项或者是需要完成哪些操作。
切换界面时需要完成的操作
1. 焦点的设置
在隐藏当前界面进行新界面时,要设置新界面的焦点
,且要注意的是,此操作需要在新界面show之前完成
,否则可能会出现问题。
new_widget->set_cur_focus();//此处在新界面的方法中设置焦点
new_widget->show();
2. 键盘的切换
在切换界面时,需要对键盘进行切换,当前界面需要释放键盘,而新界面需要抓取键盘。(此操作不一定需要)
this->releaseKeyboard();
this->hide();
new_widget->grabKeyboard();
new_widget->set_cur_focus();
new_widget->show();
其他焦点丢失的原因
- 因为焦点被设置在界面上了,这种情况的解决方法就是将界面的focuspolicy参数设置为nofocus就行了。