问题描述

  • 起因:
     项目某页面的布局,之前都是用绝对位置去布局的。后来需求各控件的位置需要随着某一控件的隐藏和显示去变化,这就很不方便,需要各种根据高度和显示状态去计算控件坐标并更新。
     随着需求的增加,绝对位置已经满足不了各种能够变化,问题频出。
     所以需要layout作为容器,容纳控件,以适应各控件的位置动态变化。
    -问题如下图所示:
    预期效果和实际效果
    控件2高度变化之后竟然和其他控件重叠了。
    造成了很大的困扰。

问题原因

在这里插入图片描述
简而言之,言而简之,我的layout所在主窗口的大小是固定不变的,layout的中的控件的大小策略决定了layout的大小。
因为我layout中的某些控件是设定了最大最小值和大小策略的。

解决方案

最后添加如下代码:

m_mainLayout->setSizeConstraint(QLayout::SetFixedSize);

完美解决。
当然遇到这种问题的其他人也可能需要使用其他的大小约束。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐