QT开发中,当一个widget的部分子对象隐藏,主动刷新widget控件的大小,这时可以利用QT的Layout对象,相当于一个空降的管理器,可以帮助自动布局等,代码如下
if(layout() == nullptr) //是否有布局对象(layout)
{
return;
}
layout()->invalidate(); //使原先的布局失效
layout()->activate(); //再次激活
layout()->update(); //更新模板
adjustSize(); //调整大小
这样就能再代码隐藏widget子对象时,主动刷新widget的大小;如果不生效,可以看看widget是否被其他layout包含着,如果有,对外面的layout执行同样的操作(invalidate 和activate)。