原文请看:http://www.cnblogs.com/linmeng/archive/2012/07/05/2559259.html

我们知道,通过Qt的各种Layout可以实现控件的自动布局。

但是在使用Qt Designer创建的UI时,发现UI始终是设计时的样子,无法随着容器的放大缩小自适应地变化。

通过之前对ui的.h文件进行分析,我们知道Qt在生成ui代码时,根据最外层的Layout自动添加一个了Widget:

   /** 这个Widget在UI设计时是没有的,是Qt为了方便组合其他的组件而且自动创建的。
Widget的名字是根据最外层的组件来的,这里最外层是一个QVBoxLayout组件,故Widget
以VerticalLayoutWidget命名*/
QWidget *verticalLayoutWidget;

而我们在setupUi时,将 verticalLayoutWidget 指定为目标窗体的子控件,而 verticalLayoutWidget 的大小是已经固定了的,如下:

      //创建myQtTestForm的Child Widget,
verticalLayoutWidget = new QWidget(myQtTestForm);
verticalLayoutWidget->setObjectName(QString::fromUtf8("verticalLayoutWidget"));
verticalLayoutWidget->setGeometry(QRect(20, 20, 491, 311));

所以, verticalLayoutWidget 不会随父窗口的放大缩小而变化。

解决办法就是,把 verticalLayoutWidget 放在目标窗体的Layout中,代码如下:

//设置Ui
ui.setupUi(this); //使Ui可自适应父窗口大小
QVBoxLayout* mainLayout = new QVBoxLayout;
mainLayout->addWidget(ui.verticalLayoutWidget);
setLayout(mainLayout);

最新文章

  1. IE 浏览器各个版本 JavaScript 支持情况一览表
  2. 关于IOS调用微信支付jsapi不起作用的解决方法
  3. JQuery 添加节点
  4. 快速入门系列--深入理解C#
  5. K米评测
  6. html5 摇一摇事件监听
  7. Android硬件加速
  8. GPUImage 滤镜头文件
  9. 一点BPXA的思考
  10. linux log系统图
  11. webapp之路--meta标签format-detection、apple-mobile-web-app-capable
  12. 自定义浏览器滚动条的样式,打造属于你的滚动条风格——兼容IE和webkit(ff不支持)
  13. OpenStack dashboard界面操作 实现登陆虚拟机并通信
  14. 点击button1弹出form2,并在form2中点击button2来调用form1的方法
  15. 51nod1268 和为K的组合(DFS)
  16. HttpClient 测试web API上传文件实例
  17. CentOS卸载通过yum安装的软件
  18. Spring Cloud :断路器集群监控(Turbine)
  19. 【BZOJ】3144: [Hnoi2013]切糕
  20. Spring学习笔记(一):快速入门

热门文章

  1. 全表 or 索引
  2. Java运行原理研究(未完待续)
  3. shell多进程的实现
  4. 用CSS3画出一个立方体---转
  5. Dozer 对象的"搬运工"
  6. 将new Date() 格式化为 ’2018-10-11‘ 的字符串格式
  7. 多例模式,保证实例的唯一性,仅适用于form窗体
  8. ZOJ 3781 Paint the Grid Reloaded 连通块
  9. POJ - 1330 Nearest Common Ancestors 最近公共祖先+链式前向星 模板题
  10. 【leetcode 简单】第十二题 报数