单击Qt SoftwareInputPanel应将焦点恢复到目标对话框/小组件

时间:2013-09-16 11:04:45

标签: qt

我按照示例here创建了一个Qt软件输入面板(SIP),效果非常好。不幸的是,当两个对话框失去焦点时,单击SIP不会将焦点恢复到任一窗口小部件。总结一下,当我:

  1. 在SIP和目标对话框/窗口外单击,可以理解的是,两个窗口小部件都失去焦点(即使都配置为在其他对话框之上
  2. 随后点击SIP,两个小部件都不会获得焦点。
  3. 我们发现这种行为有点奇怪,我们的用户也会怀疑。当两个窗口小部件都失去焦点时,有没有办法通过单击SIP将焦点恢复到目标对话框?

1 个答案:

答案 0 :(得分:0)

解决。像这样使用QApplication::setActiveWindow()

void KeyboardPanel::buttonClicked( QWidget *widget )
{   
    if( m_lostFocus )
    {
        QWidget* parentWidget = m_lastFocusedWidget->parentWidget();
        if( parentWidget ) QApplication::setActiveWindow( parentWidget );
    }
}