Qt 布局常用方法

Qt的布局有下列多种

    QBoxLayout              水平或垂直排列控件
    QButtonGroup            组织按钮的容器
    QFormLayout             管理输入控件和其相关的标签
    QGraphicsAnchor         表示在QGraphicsAnchorLayout中两个项目之间的锚
    QGraphicsAnchorLayout   在图形视图中可以将锚连接到一起
    QGridLayout             网格布局(多行多列)
    QGroupBox               带标题的分组框
    QHBoxLayout             水平排列控件
    QLayout                 几何管理器的基类
    QLayoutItem             抽象的操作布局Item
    QSizePolicy             描述水平和垂直大小调整的策略
    QSpacerItem             布局中的空间隔
    QStackedLayout          切换控件,同一时间只有一个控件可见
    QStackedWidget          切换控件,同一时间只有一个控件可见
    QVBoxLayout             垂直排列控件
    QWidgetItem             表示一个控件的布局项

常用的就是下列三种

    QHBoxLayout  水平布局
    QVBoxLayout  垂直布局
    QGridLayout  网格布局(多行多列)

下面就布居中的方法做以说明
(1)给页面设置布局 * 这不是布局的方法*
void QWidget::setLayout(QLayout * layout)

(2)添加控件到局部中
void addWidget(QWidget * w)
另一种用法:addWidget(button2, 0 , Qt::AlignLeft | Qt::AlignTop); 可设置对齐方向

(3)设置伸缩因子
setStretch(int,int)
比如布局中有一行三个按钮,对布局做如下设置:
setStretch(0,1)
setStretch(1,2)
setStretch(2,3)
三个按钮的宽度比例就是1:2:3
但是前提是不能用别的方法控制按钮的宽度
还有一点:如果上述布局中的控件数大于3,而只设置伸缩因子的控件数小于等于3 就没效果………………. 斗胆猜想:这个伸缩因子的值应该=每个控件的伸缩因子/所有控件伸缩因子之和

(4)设置整个布局与其他控件的距离(外边距)

setMargin(int)
setContentsMargins(int left, int top, int right, int bottom);

setMargin可以设置左、上、右、下的外边距,设置之后,他们的外边距是相同的。
setContentsMargins与其功能相同,但是可以将左、上、右、下的外边距设置为不同的值。

(5)设置布局内控件之间的距离(内边距)
setSpacing(int)

(6)添加伸缩空间
addStretch();
用在布局开始添加控件之前 所有控件就会居右显示
用在布局添加完控件后 所有控件就会居左显示
用在布局两侧 所有控件就会居中显示
用在布局中每个控件的两侧 所有控件就会均分显示

(7)设置布局方向
setDirection(QBoxLayout::TopToBottom);
该设置可以将一个垂直的和水平的互换方向

(8)设置拉伸系数
setStretchFactor(QWidget *w, int stretch);
setStretchFactor(QLayout *l, int stretch);

如果是水平布局
setStretchFactor(button1, 1);
setStretchFactor(button2, 2);
当窗体变大时,会优先将button2进行拉伸,
再拉伸button1,使得button1与button2的宽度比例为1:2。

猜你喜欢

转载自blog.csdn.net/kidults/article/details/80106981
今日推荐