Qt:当QMainWindow最大化/未最大化时触发代码

时间:2011-12-07 23:27:44

标签: c++ qt

如果/当用户最大化或取消最大化(浮动)QMainWindow时,我需要一些C ++代码来触发 ONLY 。如果需要,该程序仍将在没有这些额外代码的情况下运行,但具有此功能肯定有助于美学。基本上,如果窗口最大化,GUI中的主分割器应为25%,如果窗口未最大化,则应为50%。 (默认浮动窗口状态)

现在,用户必须手动拖动它,如果他们想要更多空间并且分割器一侧的大部分屏幕空间被浪费,因为无论窗口大小如何,QSplitter都希望默认为50%。这很烦人,但如果它发生的话,它不会破坏你的一天。

我检查了QMainWindow是否有一个用于检查窗口最大化状态的插槽但据我所知没有。怎么办呢?

2 个答案:

答案 0 :(得分:2)

查询当前窗口状态:

要收听状态更改,请覆盖:

如果您有QEvent :: WindowStateChange,请调用拆分器放置代码。对于所有情况,将事件传递给基类事件处理程序。

答案 1 :(得分:1)

我不知道如何做到这一点,但你可能想要考虑从“最大化”切换到“恢复”(反之亦然)并不能保证如果用户有窗口大小的显着变化在最大化之前已经拉大了窗口。如果您确实找到了接收这些事件的方法,您可能仍需要在进行调整之前检查实际窗口大小。

您可能只想处理调整大小事件以进行调整,这样您就可以处理用户手动拉伸或缩小窗口(以及最大化或恢复时)的情况。我不确定我会发现这种行为令人满意,但是可能会将其作为可配置的项目提供:)