这篇文档是我用了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布局管理器使用心得及引发的思考
分享到:
相关推荐
空气净化器净化新闻网页贴吧知道经验音乐图片视频地图百科文库写经验 领红包百度经验 > 游戏/数码 > 电脑 > 电脑软件原创浏览:6298更新:2014-11-
a) 画出一个圆形表盘,包含三角形的时针、分针、秒针,以及上方的刻度,加上名字 b) 在窗体发生变化的时候,时钟能够根据窗体大小自动调整 c) 时间能够显示当前时间
动态布局,实现空间在界面上填充,当空间大小变化实现自动换行。
特点: 1:无边框窗体,自定义标题栏,鼠标拖动,大小缩放,双击切换。 2:除了少量的几个图片资源外,几乎使用QSS写完所有颜色样式控制。 3:自定义一个QMessageBox对话框,自动换行显示提示信息,可以很方便的...
\ 第11章 事件机制 李立夏介绍了Qt的事件处理模型,详细介绍了在Qt程序设计中处理事件的五种方法,并讨论了如何利用Qt事件机制加快用户界面响应速度。 283 \ 第12章 数据库 李立夏介绍了Qt的数据库处理,重点介绍了...
由于Qt 3到Qt 4的变化很大,甚至源代码都不兼容,所以这些资料的参考价值并不是太大。于是,我们通过阅读Qt的assistant和examples来学习并使用Qt 4。在逐渐掌握Qt 4的过程中,我们萌发了编写一本关于Qt 4的书来帮助...
无论是想要界面中部件有一个很整齐的排列,还是想要界面能适应窗口的大小变化,都要进行布局管理。 QLayout类 QLayout类是布局管理器的基类,是一个抽象基类,继承自 QObject 和 QLayoutItem 类,而 ...
Qt中可以实现QPropertyAnimation属性动画,动画效果流畅自然,通过对相应的属性参数进行修改,就可以实现诸如大小位置变化的动画。其中内置了多种插值曲线,可以对属性参数进行流畅的变化。对每个场景开始时对每个...
如果我们想创建能够随着部件大小自动缩放而不是平铺的背景,我们需要设置一种称之为“边框图片”的东东。 注意 “边框图片”可以通过border-image属性指定,它同时提供了部件的背景和边框。 一个“边框图片”被分为...
集成宽网音效器及音频转换器,提供调整声音大小、音质、音效及自动调整采样功能,立体波形及频谱显示,以及支持MPEG1、MPEG2、MPEG2.5类型的VBR、CBR、ABR等MP3编码方式,是多媒体提取并转换MP3及其它音频的理想工具...
ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件 ASF:Microsoft高级流媒体格式文件 ASM:汇编语言...
87.UNIX中QT是什么意思? 88.在软件开发生命周期中的哪个阶段开始测试? 89.dotnet与J2EE的比较? 90.什么是ActiveX? 91.Java中IDL是什么? 92.ISO9000和CMM是什么?IS09000和CMM(软件能力成熟度模型)认证是国际上...