我有一个由主窗口调用的UI窗口。我希望它是非模态的,但要留在父项之上,如果父项最小化,则要使其最小化。

如果用户想要对两者进行更改,则他应该能够进行,并且除非用户将其关闭,否则不会关闭该 child 。 child 将永远留在 parent 的头上-但不要放在其他任何东西的头上。

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

上面的内容将 child 放在父级的顶部,允许在 child 启动后在父级上进行工作...但是如果失去焦点,则该子级会隐藏在父级的后面。
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 在顶部,我可以在父级上工作,而子级仍显示在顶部...但是最小化父级不会同时最小化子级,并且子级位于所有窗口的顶部(应该只停留在父项上)

如何制作“工具箱样式”效果-在父级处于事件状态时将子级置于父级之上,而在父级最小化时将子级置于父级之上?

我还尝试了所有的窗口标志,但是当它们失去焦点时,它们允许 child 隐藏起来。

最佳答案

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

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

09-06 18:07