• 9427阅读
  • 1回复

Focus问题终结帖,setFocus, focusInEvent,focusOutEvent [复制链接]

上一主题 下一主题
离线318065268
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-21
— 本帖被 XChinux 执行加亮操作(2010-11-27) —
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();
}

    欢迎大家提出疑问,本帖也会根据大家的反馈保持更新!
    
Email  rsail@126.com(私人邮箱)
QQ:   318065268
离线wincloudbear
只看该作者 1楼 发表于: 2010-11-25
请教:我在一个mainwindow上弹出个Dialog,focus不在dialog上
你好,如题,我用了你都方法可以设置dialog上button都focus,但是直接按tab无用,需要用鼠标点一下对话框空白处后,按TAB才能在DIALOG上切换。
我希望达到的效果是每弹出一个窗口,可以只用键盘进行操作,完全不用鼠标。
刚接触qt,最近在写一个软件,还望大牛帮忙,many thanks!~~
我邮箱:wincloudbear@foxmail.com
希望多交流
快速回复
限100 字节
 
上一个 下一个