setFocus不能生效的问题

focusInEvent只有在对象显示出来的情况下设定setFocus才可以触发。这一点help手册里有说明:

 



转一篇文章如下:http://blog.csdn.net/alex201030273437/article/details/8193757

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();
}



FROM:  http://blog.csdn.net/zzwdkxx/article/details/29380689


在Qt中,setFocus()函数用于将焦点设置到一个小部件上,无论其焦点策略如何。但是,它不会清除任何键盘抓取。\[2\]如果你想在自定义的QWidget中设置焦点,你可以重写focusInEvent()和focusOutEvent()函数。例如,你可以在focusInEvent()函数中调用setFocus()来将焦点设置到子小部件上。\[1\]另外,你还可以在重写的focusInEvent()和focusOutEvent()函数中发出自定义的信号,以便在焦点变化时执行其他操作。\[3\] #### 引用[.reference_title] - *1* [Qt setFocus无法生效问题](https://blog.csdn.net/FengOLei/article/details/115006595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Qt setFocus](https://blog.csdn.net/Hodors/article/details/107028124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Qt弹出式窗口、Qt::popup闪退问题、设置窗口无焦点问题](https://blog.csdn.net/qq_42108501/article/details/117166255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值