gpt4 book ai didi

qt - 父级之上的无模式 Qt 窗口,但不在其他应用程序之上

转载 作者:行者123 更新时间:2023-12-03 17:40:58 25 4
gpt4 key购买 nike

我希望有一个 Qt 对话框窗口:

  • 始终位于其父级(主应用程序窗口)之上,
  • 允许用户与父窗口交互,以及
  • 并不总是处于其他应用程序的顶部。

  • 我已经能够通过创建对话框模式来实现 1 和 3,并且我可以通过使用 Qt::WindowStaysOnTopHint 窗口标志来实现 1 和 2。但我无法让这三项工作都成功——这可能吗?

    如果答案是特定于操作系统的,我主要在 Mac 上工作,但我更喜欢也适用于 Windows 和 Linux 的解决方案。谢谢!

    最佳答案

    您可以尝试使用 QGuiApplication::applicationStateChanged .这样,如果用户进入或离开您的应用程序,您就会收到通知。只需动态添加和删除 Qt::WindowStaysOnTopHint您的窗口的标志。如果您有多个窗口,可以使用 QGuiApplication::focusWindowChanged 和第一个一起。

    编辑:要使对话框非模态,请设置 NULL作为它的父级,或将 windowModality-Property 设置为 Qt::NonModal并使用 show 显示对话框而不是 openexec
    QDialog 子类中的示例代码:

    connect(QApplication::instance(), SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(changeAlwaysOnTop(Qt::ApplicationState)));

    ...

    void MyDialog::changeAlwaysOnTop(Qt::ApplicationState state)
    {
    if (state == Qt::ApplicationActive)
    setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
    else
    setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint);
    show();
    }

    关于qt - 父级之上的无模式 Qt 窗口,但不在其他应用程序之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216498/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com