原地址:http://blog.csdn.net/lastsoup/article/details/7028243

设计软件中各个部件的位置排列,有两种方法:

1.设置widget的在父窗体中的坐标和大小

widget->move(x,y);

widget->resize(width,height);

//widget->setGeometry(QRect(x,y,width,height));

什么时候用:不想被布局约束,对这种控件可控制时

例如下面的可活动按钮

缺点:在遇到很多个部件时,一个个算坐标会很麻烦

部件不自动随父窗体的变化而变化(这里要重写resizeEvent事件算变化比例建立父子窗体之间的联系,而布局很容易做到)

2.布局管理Layout(可控制的部件不要使用布局中,一旦改变会影响到整体布局)

经常要用到的三个布局部件

QHBoxLayout水平布局

QVBoxLayout垂直布局

QGridLayout表格布局

————————————————————————————————

QHBoxLayout和QVBoxLayout用法相同

基本:

vlayout->addWidget(w1);

vlayout->addWidget(w2);

……

——————————————————————————————————

QGridLayout用法

layout->addWidget(widget,row,column,rowSpan,columnSpan);

layout->addLayout(layout,row,column,rowSpan,columnSpan);

(row,column):控件占据左上角的单元格位置

rowSpan:控件占据的行数

columnSpan:控件占据的列数(不写默认为1)

——————————————————————————————

控件随窗体伸缩

将布局与主窗体建立联系

layout=new QHBoxLayout(this);

或者this->setLayout(layout);

——————————————————————————————

layout->addStretch();可伸缩的空间

layout->setAlignment(Qt::AlignHCenter);//布局内控件水平居中

layout->setSpacing(10);//控件间隔为10

layout->setMargin(10);//页边距为10

Qt设计器中spacer控件

以上在对控件位置调整时常用

——————————————————————————————————

结合SizePolicy属性控制布局管理中的控件的尺寸自适应方式

也就是控件随主窗体伸缩方式(可自行增大或缩小)

QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//可自行增大和收缩

Fixed:不能放大或缩小

Minimum:不能小于sizeHint尺寸,可放大(若设置了最大尺寸)

Maximum:不能放大,可缩小到允许的最小尺寸(若setMinimumSize(10,10)只能缩小到(10,10))

Preferred:控件的sizeHint是他的Hint,可以放大或缩小

————————————————————————————————————————————

比例因子的使用

例:布局中有左右两控件,右边比左边水平伸缩2倍

sizePolicy.setHorizontalStretch(1);
sizePolicy.setVerticalStretch(0);

left->setSizePolicy(sizePolicy);

sizePolicy.setHorizontalStretch(2);
sizePolicy.setVerticalStretch(0);

left->setSizePolicy(sizePolicy);

水平伸展比例(1,2)

垂直伸展比例(0,0)

——————————————————————————————————————————————————

布局顾名思义是对控件的位置的整体规划,每个控件之间都存在着位置关系,所以改变控件(移动、关闭)会破坏布局

——————————————————————————————————————————————————

结论:两种方法结合使用,应该可以应对大部分界面布局

本人是菜鸟,实践不多,如有错误欢迎指正

—————————————————————————————————————————————————

上述代码是为了理解布局使用,Qt设计器可实现

Qt布局管理的更多相关文章

  1. 第六章 Qt布局管理器Layout

    第六章 Qt布局管理器Layout 大家有没有发现一个现象,我们放置一个组件,给组件最原始的定位是给出这个控件的坐标和宽高值,这样Qt就知道这个组件的位置.当用户改变窗口的大小,组件还静静地呆在原来的 ...

  2. 初识Qt布局管理器

    Qt布局管理器的类有4种,它们分别为QHBoxLayout.QVBoxLayout.QGridLayout和QStackLayout.其中,QHBoxLayout实现水平布局,QVBoxLayout实 ...

  3. Qt——布局管理器

    教程地址 运行截图: 代码: #include "mainwindow.h" #include <QApplication> #include <QHBoxLay ...

  4. Qt 布局管理器

    在一个颜值当道的今天,无论买衣服,买车还是追星,颜值的高低已经变成了大家最看重的(不管男性女性都一样,千万别和我说你不是):而对于程序猿来说,开发一款软件,不再只注重逻辑和稳定性,美观和用户友好性也是 ...

  5. Qt布局管理器的使用(一)

    曾经对Qt的布局管理器掌握的还不清楚,今天特意学习了下.感觉收获还挺大的,特意拿出来和大家分享. 首先.要明确布局管理器的用处,及使我们的界面看起来比較整洁.美化.另外一点就是为了使我们的控件可以更随 ...

  6. QT5每日一学(五)QT布局管理器

    Qt中的布局管理器主要包括 QBoxLayout基本布局管理器 QGridLayout栅格布局管理器 QFormLayout窗体布局管理器 而基本布局管理器又分为QHBoxLayout水平布局管理器和 ...

  7. QT 布局管理器的使用

    很多的时候,需要布局管理器的使用, 在此介绍一下布局管理器的使用,直接上代码 #include "widget.h" #include "ui_widget.h" ...

  8. qt布局管理-缩放、多窗口切换

    关于缩放的布局 所有控件要求与主窗口同时缩放,那么在所有控件设置好布局后,最后点击最外侧的主控件,选择水平布局或者垂直布局即可. 另外每个空间的属性可更改,如SizePolicy用于设置空间是否可缩放 ...

  9. Qt 布局管理

    在布局编辑环境里: sizePolicy 影响控件在布局上的大小. layout 的属性 如:如margin 设置控件在布局上边距. 有时候需要设置 下面是一个 代码布局的方式 #include &q ...

随机推荐

  1. 【组队赛三】-C cf448B

    Suffix Structures Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit S ...

  2. 写了交互给后台后来不能用?bug多多多又找不到文件效率低?工作流程帮你优化起来~~~~

    前端工作流程(多方交互篇) 新的网页: 1.跟美工沟通,跟产品沟通,跟后台沟通.前两者主要是页面样式.后者主要是表单交互.用哪个框架之类的. 2.实现.(写清楚哪块是用什么验证方式的)→ 给后台. 3 ...

  3. 域用户允许更改IP地址

    1.在DC上设置不好使. 2.需在本地用户组里添加到network.......组里. 注意:有的时候,连接不到DC上,是由于DNS的事,需要先去掉不必要的dns地址. 添加完后,需要重启或注销. 另 ...

  4. 【QT相关】Image Viewer Example

    结合QLable和QScrollArea显示一个图片. QLable典型用于用户展示文本,但是也能展示图片.QScrollArea提供了一个滚动视图,如果子控件超过了框架限制,QScrollArea自 ...

  5. PHP面向对象基础实例

    <?phpclass marine{ public $blood = 50; //剩余的血 public $kills = 0; //杀敌数量 static $all_num = 0;//兵的数 ...

  6. ZOJ 2968 Difference Game 【贪心 + 二分】

    题意: 有Ga.Gb两堆数字,初始时两堆数量相同.从一一堆中移一一个数字到另一一堆的花费定义为两堆之间数 量差的绝对值,初始时共有钱C.求移动后Ga的最小小值减Gb的最大大值可能的最大大值. 思路: ...

  7. search_word

    一个小程序,用asc码输出自己的名字.要求是,a~z两路输入,输出了一个完整的拼音之后还需要输出一个空格.—— 信息硬件过滤的雏形. module search_word ( clock , rese ...

  8. java 访问 mysql 数据库的字符集设置

    mysql是在linux下,java代码通过jdbc访问总是中文乱码.做过如下尝试: 1)修改 mysql的 my.cnf文件,设置 default-character-set等参数 2) 利用alt ...

  9. YARN & HDFS2 安装和配置Kerberos

    今天尝试在Hadoop 2.x开发集群上配置Kerberos,遇到一些问题,记录一下 设置hadoop security core-site.xml <property> <name ...

  10. PHP设计模式——策略模式

    概述 策略模式属于对象的行为模式.其用意是针对一组算法,将每个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换.策略模式使得算法可以在不影响到客户端的情况下发生变化 UML图 策略模式中主 ...