Focus问题终结帖,setFocus, focusInEvent,focusOutEvent

来源:互联网 发布:淘宝美工视频 编辑:程序博客网 时间:2024/06/05 01:11
focus问题曾经困扰了我一些时间。过程中也朋到了很多麻烦。现在总结一下,希望能够解决所有关于focus方面的问题。

    即使setFocus了也不一定有效果。  帮助文档中说的很清楚,你不能在你的部件还不可见的时候setFocus,这样不行。解决这个问题的办法就是把setFocus()的操作放到我们这个部件的showEvent()里面去做。而我们一般可能喜欢放到构造函数最后去setFocus,这样往往是没有效果的,问题就在这。  
    另外,我们可能喜欢对一个widget或其派生的部件做setFocus,这也往往是没有效果的。因为一个widget即使获取了焦点,如果没有后续的处理,你是看不到的。也不会因为你的widget有了焦点,就自动的让里面的某个子部件,比如按钮有了焦点。 所以,我们在使用setFocus的时候,一般不要widget->setFocus(),而是button->setFocus()或者label->setFocus()。
    所以,常见的会是这种形式: 
void LoginForm::showEvent(QShowEvent *)
{
    ui->loginButton->setFocus();
}
原创粉丝点击