Loading

【解决问题】弹簧在结合 QStackedWidget 后没有预期效果,并未按最大高度挤压控件

1 开发环境

  • linux 版本:统信 UOS 1030(可以认为是特殊的 ubuntu)

  • 开发语言:C++

  • QT:5.9.9 或 5.14.2 均可

2 问题现象

1、红色圈圈住的地方是一个栈布局(暂且叫 widget_normal),初始界面是这样

2、因为界面不美观,因此在登录按钮下方,添加了一个横向不变,纵向拉伸的弹簧,添加后,如下图所示:

从此图可以看出来,弹簧生效了。挤占了多余的空白空间。

3、此时红色圈住的地方,展示另一页纵向比较短的布局(暂且叫 widget_authcode),展示如下图所示:

从此图可以看出来,弹簧并没有“生效”,还是有多余的空白空间

4、 将 QStackedWidget 的背景色设为绿色,widget_authcode 设为黑色,看一下 QStackedWidget 的高度是否与当前显示的 widget 页高度一致。运行效果,如下图所示:

从此图看出,目前 QStackedWidget 的高度是否与当前显示的 widget 页高度一致。所以并不是弹簧没有生效,还是没有空白空间可供挤占

5、widget_authcode 的控件,不需要那么大高度,因此给 widget_authcode 手动设置 setFixedHeight,再运行,期望此时 QStackedWidget 的高度是否与当前显示的 widget 页高度一致。运行效果,如下图所示:

从此图看出,QStackedWidget 的高度是否与当前显示的 widget 页高度并不一致,观察推测 QStackedWidget 的整体高度将取决于最高的那一页的高度,即 widget_normal

6、根据第五步的推测,手动设置 QStackedWidget 的高度,将其设置与 widget_authcode 页高度一致,运行效果,如下图所示:

从此图看出,弹簧已生效,达到预期效果。

3 原因

QStackedWidget 的整体高度将取决于最高的那一页的高度(宽度应该一样)

4 解决方法

因此如果需要设置弹簧,需要单独设置每一页 Widget 的固定高度,并且设置 QStackedWidget 的高度与当前显示页的高度一致。

5 参考资料

1、关于QStackedWidget - 每天挖点井 - https://blog.csdn.net/tech_digger/article/details/6436985

2、自动将“stackedWidget”页面的高度调整为其上放置的小部件的高度 - Python中文网 - https://www.cnpython.com/qa/1716874

posted @ 2023-06-01 10:52  她爱喝水  阅读(283)  评论(0编辑  收藏  举报