Qt 窗口大小自动变化
目录
界面中需要隐藏不常用的设置项,并通过按钮来控制是否显示。窗口大小随控件的隐藏和显示而自动变化。
Qt中的布局管理器(各种Layout类)可以自动管理控件布局,只需将控件添加到各种Layout中,就可以实现布局。 各个Layout类默认随父控件大小变化而变化,就像我们放大窗口,里面控件也会随之拉伸一样。这种关系是父控件变化导致子控件变化。
而我需要的是控件隐藏时,窗口变小,与上面相反,由子控件大小控制父控件大小。
这就需要用到QLayout::SetFixedSize
(Layout中主控件大小为sizeHint(),不可放大缩小)。设置为SetFixedSize后,窗口大小固定,仅由内部控件大小决定,窗口没有最大化按钮,也不能拖拽缩放。这样,控件隐藏时,窗口重新计算自己的大小,并自动缩小,反之亦然。
界面
用More按钮(设置为checkable)控制两个GroupBox是否显示,并将More的toggled(bool)
信号与GroupBox的setShown(bool)
槽连接。
如下图所示
代码
在构造函数中设置size constraint,并隐藏不显示的控件。
ui->gb_switch_more->hide();
ui->gb_address_more->hide();
layout()->setSizeConstraint(QLayout::SetFixedSize);
效果
初始
点击More之后