Qt 的几个核心机制总结之 布局(QWidget可以设置setSizePolicy,而QSizePolicy有Fixed,minimum,maximum,preferred,expanding,ign

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 的几个核心机制总结之 布局(QWidget可以设置setSizePolicy,而QSizePolicy有Fixed,minimum,maximum,preferred,expanding,ign相关的知识,希望对你有一定的参考价值。

1.Qt布局的作用

Qt的布局是通过布局管理器来实现的,布局管理器负责在父类窗口部件区域构建子窗口部件,使得放置在窗体中的每个窗口部件都有一个适合的大小和位置,并且能够随着应用程序本身的变化而变化从而达到不改变整体的布局的结构的效果。相对于通过设定绝对位置来搭建界面的方法来讲有如下优点

1.1.父窗口改变的时候,子窗口不能作出相应的调整。

1.2.不用人工计算这些位置和大小

2.Qt中的布局类及继承关系:

QBoxLayout  QHBoxLayout  QVBoxLayout  QGridLayout  QFormLayout  QStackedLayout

继承关系图如下:

技术分享图片

 

QBoxLayout:直线布局,可以规定排序的方向是从左到右还是从右到左,从上到下还是从下到上布局  

QHBoxLayout  :水平布局

QVBoxLayout  :垂直布局

QGridLayout  : 将空间划分为若干个行和列,并把子窗口部件放置到划分成的一个个小空间中

QFormLayout :表格布局把布局空间划分为两列,一列一般放标签,另一列一般用于放置LableEdit之类的窗口部件。  

QStackedLayout:把一系列窗口部件排列成堆叠的形式,每次只能顶部的部件是可见的。

 

3.改善布局结构

大小暗示sizeHint在未被重载的情况下,如果该窗口部件属于某个布局管理器,那么返回的值为QT为这个部件推荐的尺寸。如果不属于任何布局管理器的时候返回无效的值

最小大小暗示minimumsizehint :为某个窗口部件提供最小大小的限制。任何小于这个尺寸的窗口都被限制为这个大小

大小策略 QSizePolicy

Fix  不会发生任何的伸缩

minimum  推荐的大小是它的最小尺寸,它不会变得更小,但是可以变得更大

maximum 推荐的大小是它的最大尺寸,不会变得更大

preferred   推荐大小为优先选择,可以变大或者变小

expanding  能够感知到推荐的大小,但是会以尽可能大的空间来放置窗口部件

ignore       不能感知到推荐的大小,会以尽可能大的空间来放置窗口部件

伸缩因子

用于说明在增大窗体的时候,对不同的子窗口部件使用不同的放大比例。通过设置qsizePolicy::horizontalstretch   qsizePolicy::verticalstretch来实现

大小限制

设置窗口的最大大小最小大小,通过sizeConstraint来获取,通过setsizeconstraint来设置

空白和边距

空白指的是整个布局四周距离窗体边缘的距离,间距指的是布局内部各个窗口部件之间的距离

空白设置setcontentmargins,间距设置setspacing

对于栅格布局和表格布局使用的是sethorizonspacing和setverticalspacing来设置。

 

4.布局管理器的基本操作

向布局中增加部件

向布局中删除部件

取消布局

应用一个布局

http://blog.csdn.net/jimmy2013_1_1/article/details/8598264

以上是关于Qt 的几个核心机制总结之 布局(QWidget可以设置setSizePolicy,而QSizePolicy有Fixed,minimum,maximum,preferred,expanding,ign的主要内容,如果未能解决你的问题,请参考以下文章

Qt之表单布局(QFormLayout)

Qt之UI文件设计和运行机制

Qt之窗体布局(QFormLayout)

从布局 QT 中删除 qwidget

Qt:带有 Qwidget 窗口容器的布局

QT UI 使一个QWidget里面的元素自动填充满本QWidget