【问题标题】:Qt: Keep child window on top of parent even when it loses focusQt:即使失去焦点也将子窗口保持在父窗口之上
【发布时间】:2015-03-08 08:53:45
【问题描述】:

我有一个由主窗口调用的 UI 窗口。我希望它是非模态的,但保持在父级之上,如果父级被最小化,则与它一起被最小化。

如果用户想在两者中进行更改,他应该能够,并且除非用户关闭子项,否则不会关闭子项。孩子总是在父母之上——但不是在其他任何东西之上。

m_child->show();
m_child->activateWindow();

上面将子级放在父级之上,它允许在子级启动时在父级上工作......但是如果子级失去焦点,它会隐藏在父级后面。

m_child->show();
m_child->activateWindow();
m_child->raise();

没有变化。

使用

Qt::WindowFlags flags = m_child->windowFlags();
m_child->setWindowFlags(flags | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint);
m_child->show();
m_child->activateWindow();

孩子在最上面,正如我想要的那样,我可以在孩子仍然显示在最上面的时候对父母工作......但是最小化父母并不会最小化孩子,并且孩子保持在所有之上windows(它应该只停留在父级之上)

如何制作“工具箱样式”效果 - 在父项处于活动状态时让子项在父项之上,但在父项最小化时最小化子项?

我还尝试了所有窗口标志,但它们允许孩子在失去焦点时隐藏起来。

【问题讨论】:

    标签: c++ qt layout window


    【解决方案1】:

    您可以通过将Qt::Tool 标志添加到工具箱小部件并将主窗口设置为其父窗口来实现此行为。

    http://doc.qt.io/qt-5/qt.html#WindowType-enum

    【讨论】:

    • 谢谢!我已经尝试过 Qt::Tool 标志但不知道父级,这非常有效!
    • 对于 Mac,行为不是我想要的 - “工具”窗口始终保持在顶部,即使我最小化应用程序...我已经尝试过 setAttribute(Qt::WA_MacAlwaysShowToolWindow,false)但它似乎没有什么区别.. 有没有任何标志可以模仿 mac 上的 windows 行为?
    猜你喜欢
    • 2013-01-30
    • 2010-12-07
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多