0

我按照此处的示例创建了一个 Qt 软件输入面板 (SIP) ,它运行良好。不幸的是,当两个对话框都失去焦点时,单击 SIP 不会将焦点恢复到任一小部件。总而言之,当我:

  1. 在 SIP 和目标对话框/窗口之外单击,可以理解的是,两个小部件都失去焦点(即使两者都配置为位于其他对话框之上
  2. 随后单击 SIP,这两个小部件都没有获得焦点。

我们发现这种行为有点奇怪和怀疑,我们的用户也会如此。当两个小部件都失去焦点时,有没有办法通过单击 SIP 将焦点恢复到目标对话框?

4

1 回答 1

0

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

void KeyboardPanel::buttonClicked( QWidget *widget )
{   
    if( m_lostFocus )
    {
        QWidget* parentWidget = m_lastFocusedWidget->parentWidget();
        if( parentWidget ) QApplication::setActiveWindow( parentWidget );
    }
}
于 2013-09-16T13:16:15.290 回答