Qt:保持 child window 在 parent 之上,即使它失去焦点
Qt: Keep child window on top of parent even when it loses focus
我有一个 UI window 被主 window 调用。我希望它是 non-modal,但保持在 parent 之上,如果 parent 被最小化,则与它一起最小化。
如果用户想对两者进行更改,他应该可以,并且 child 不会关闭,除非用户关闭它。 child 将始终位于 parent 之上 - 但不会位于其他任何东西之上。
m_child->show();
m_child->activateWindow();
以上将 child 置于 parent 之上,它允许在 child 已启动的同时在 parent 上工作...但是 child 如果失去焦点,则隐藏在 parent 后面。
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();
child 位于顶部,如我所愿,我可以在 parent 上工作,而 child 仍显示在顶部...但最小化 parent 也不会最小化 child,并且 child 位于所有 windows 之上(它应该只位于 parent 之上)
如何制作 "toolbox style" 效果 - 在 parent 处于活动状态时将 child 置于 parent 之上,但在 child 最小化时 parent 最小化 ?
我还尝试了所有 window 标志,但它们允许 child 在失去焦点时隐藏。
您可以通过向工具箱小部件添加 Qt::Tool
标志并将主 window 设置为其父级来实现此行为。
我有一个 UI window 被主 window 调用。我希望它是 non-modal,但保持在 parent 之上,如果 parent 被最小化,则与它一起最小化。
如果用户想对两者进行更改,他应该可以,并且 child 不会关闭,除非用户关闭它。 child 将始终位于 parent 之上 - 但不会位于其他任何东西之上。
m_child->show();
m_child->activateWindow();
以上将 child 置于 parent 之上,它允许在 child 已启动的同时在 parent 上工作...但是 child 如果失去焦点,则隐藏在 parent 后面。
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();
child 位于顶部,如我所愿,我可以在 parent 上工作,而 child 仍显示在顶部...但最小化 parent 也不会最小化 child,并且 child 位于所有 windows 之上(它应该只位于 parent 之上)
如何制作 "toolbox style" 效果 - 在 parent 处于活动状态时将 child 置于 parent 之上,但在 child 最小化时 parent 最小化 ?
我还尝试了所有 window 标志,但它们允许 child 在失去焦点时隐藏。
您可以通过向工具箱小部件添加 Qt::Tool
标志并将主 window 设置为其父级来实现此行为。