QT中UI布局设计(如何在让界面既能满足打破布局的灵活性,又能获取栅格布局的整齐性和控件跟随缩放能力)
要解决问题说明
最近在使用Qt编程,Qt的编程挺方便的,但是Qt的界面设计一直困扰着我,在使用打破布局时,界面缩放时,控件没法跟着缩放。使用栅格布局时,布局的效果一致不是我想要的,而且没法随心所欲的调整各个控件的大小。使用Qt的时间不长,一直没有找到两全其美的办法。Qt的栅格布局中,没法设置各个控件占栅格的大小(我是没找到这个功能,也许有这个功能)。
我是用的解决方案是在界面设计时,使用打破布局,这样可以随心所欲调整各个分布件的大小。为了实现栅格布局的优点,在代码中,添加Layout指令,实现栅格布局。
界面设计
界面上的设计
以界面中实现三个groupbox为例,在UI设计中,将布局设置为打破布局,如图所示。
代码中的实现
在构造函数的代码中添加Layout,把要设置的3个GroupBox放进去,并设置占的行列数。 代码片
.
QGridLayout *Layout = new QGridLayout();
Layout->addWidget(ui->groupBox,0,0,3,7);
Layout->addWidget(ui->groupBox_2,3,0,7,7);
Layout->addWidget(ui->groupBox_3,0,7,10,3);
ui->centralWidget->setLayout(Layout);
最终实现的结果
最终生成的界面如下图所示。
这个界面可以在缩放时,控件也会跟着缩放。如图所示。
如果界面设计中没有添加layout,头文件需要包含QGridLayout 头文件。
结束语
第一次写CSDN的BLOG,自己做一个记录,也为了有相同需求的人解决问题,如果有更好的解决方法或者思路,希望各位不吝赐教。