QT界面大小自动变化

来源:互联网 发布:java实现解压缩zip 编辑:程序博客网 时间:2024/05/01 21:31

来源: http://qimo601.iteye.com/blog/1245131

 

这篇文档是我用了Qt一个月后,回来补充的。

问题:很多朋友刚用Qt,当我们把界面控件摆好后,再加layout布局,界面会发生很大变形。就算不变形,窗口放大缩小后,控件还是不随着窗口发生变化,这个问题也困扰了我好几天。问题如下图所示:

 

 

解决方法:

网上朋友提供的解决方案很多,实际都能解决问题。总的来说有以下两种方式:

1、最简单的方法,还是QtDesigner直接布局。

     在VS中用Qt创建窗口时候,一般它自动给你生成了一个centralWidget,所有的控件都是在这个上面摆放的。

     所以我们只需要把所有控件摆放在每个Layout中,肯定没问题,我的上面例子是因为我每个GroupBox里面的控件都用Layout布局好了,外面的centralWidget也用了个VBoxLayout布局了。但是我的每个GroupBox没有放在layout中,所以当我最后选择centralWidget布局VBoxLayout时候,出现了界面混乱。

 

      我们应该给每一个GroupBox一个单独的布局。这样就不会出问题了。界面可以自由缩小和放大了。

     总结来说:只要在QtDesigner中,所有的控件全部放在Layout中布局,并在最外面的centralWidget里也放一个布局,加上我们可用的spacing和Margining,基本上就可以满足我们的布局需求了。

 

2、第二种方法就是网上所说的Qt重绘事件QWidget::ResizeEvent 以及Resize()和setGeometry()函数的运用。

这个一般是在界面动态发生改变时候必须用的。

 

     我后期再慢慢总结这块。。。。

 

 

另外,界面缩小放大后,所有控件可以跟着自动缩小和变化了。但是它的缩小放大的机制和每一个布局和控件中的属性相关,否则布局虽然没变,但是大小变化的并不好看!

 

布局中的属性:margining spacing stretch等可以看这篇文章

QLayout的属性介绍

 

控件的布局,大小变化的属性:介绍可以看这篇文章:

【转】如何在Qt 4程序中优化布局结构-兼回答网友提问

 

 

参考文章:

解决Qt Designer中的Form的内容不随着Form一起缩放的问题

QT布局管理器使用心得及引发的思考