在Qt中,如何使窗口成为当前窗口?

时间:2010-02-10 22:08:06

标签: qt qt4

我的QT应用程序有多个窗口,有时候,即使窗口已经打开但在其他窗口下隐藏,用户也会选择从主窗口菜单栏打开一个选项,在这种情况下我想简单地将它打开并制作它是现在的。现在使用QWidget-> raise使这个窗口在所有其他窗口之上,但它不会选择它,这就是我需要做的。我尝试了QWidget-> setFocus,但它没有做任何事情。同时我使用QWidget-> close然后QWidget-> show的组合,但我想知道是否有一个命令与 - > raise一起使用。

我试过了:

        pMission->raise();
        pMission->setFocus(Qt::ActiveWindowFocusReason);

但它没有用,所以我用过:

        pMission->close();
        pMission->show();

2 个答案:

答案 0 :(得分:9)

你有没有试过QWidget :: activateWindow?

从帮助文件中,此功能将

  

将包含此小部件的顶级窗口小部件设置为活动窗口。   活动窗口是可见的顶级窗口,具有键盘输入焦点。

答案 1 :(得分:3)

在使用Qt 4.8.0的MacOS Lion上,raise()是唯一对我有用的人。 activateWindow()和setFocus()没有。

(我没有足够的业力来对梅森的回答发表评论)