Qt:即使失去焦点,也要将子窗口保持在父窗口顶部

6

我有一个由主窗口调用的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();

孩子位于顶部,正如我所希望的,我可以在父级上工作,而孩子仍然显示在顶部...但是最小化父级不会使孩子也最小化,孩子会停留在所有窗口的顶部(它只应停留在父级的顶部)
如何实现“工具箱样式”效果 - 在父级活动时将孩子置于顶部,但在最小化父级时将孩子最小化?
我还尝试了所有的窗口标志,但它们允许孩子在失去焦点时变为隐藏状态。
1个回答

10

谢谢!我尝试了Qt :: Tool标志,但不知道父级,这很完美! - Thalia
1
对于 Mac,行为不是我想要的 - “工具”窗口始终保持在最上层,即使我最小化应用程序... 我尝试过 setAttribute(Qt::WA_MacAlwaysShowToolWindow,false),但似乎没有任何区别... 是否有任何标志可以模仿 Mac 上的 Windows 行为? - Thalia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接