【问题标题】:in Qt, How do I make a window be the current window?在 Qt 中,如何使窗口成为当前窗口?
【发布时间】:2010-02-10 22:08:05
【问题描述】:

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

我试过了:

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

但它没有用所以我用了:

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

【问题讨论】:

  • 你的意思是“......在所有其他窗口的顶部,但它没有选择它”?
  • 我的意思是命令 pMission->raise();使窗口位于所有其他窗口的顶部,但不会成为“当前”窗口。

标签: qt qt4


【解决方案1】:

你试过 QWidget::activateWindow 吗?

从帮助文件中,这个函数将

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 从 Qt 5.3.2 开始,32 位,activateWindow() 在 OS X 10.10 Yosemite 中按预期工作(如 Mason 所述)。
    猜你喜欢
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    相关资源
    最近更新 更多