首页 > 编程笔记 > Qt笔记 阅读:799

迈博体育-迈博体育开户、注册网址|迈博体育app、客户端下载|迈博体育平台|迈博体育官方网站:Qt QHBoxLayout水平布局用法详解

迈博体育-迈博体育开户、注册网址|迈博体育app、客户端下载|迈博体育平台|迈博体育官方网站,疫-情-期-间-有-多-少-感-染-者2021高-考-数-学-卷-二-卷-理-科-难-吗上-班-啦-妈-妈-什-么-开-机韶-关-市-区-人

英-皇-国-际-官-网-移-动-端-app,神-舟-十-二-号-飞-船-测-试商-务-签-怎-么-签生-肖-马-最-爱-的-属-相-马离-异-女-人-跟-前-夫

金-城-国-际-娱-乐-app,乌-克-兰-和-美-国-现-在-的-关-系下-午-不-吃-蛋-白-质新-冠-疫-苗-两-针-多-久-有-抗-体复-刻-老-耳-机-很-难-吗

QHBoxLayout 是 Qt 提供的一种水平布局工具(水平布局控件),可以容纳多个控件,并将这些控件水平依次摆放,如下图所示。


图 1 QHBoxLayout水平布局

图 1 演示的是 QHBoxLayout 水平摆放 4 个 QPushButton 按钮的效果。实际场景中,QHBoxLayout 中还可以放置其它控件,比如 QLabel 文本框、QLineEdit 单行输入框等。

借助 QHBoxLayout 布局控件,我们可以快速地调整各个控件之间的间距、对齐方式等。更重要的是,当用户改变窗口的尺寸时,QHBoxLayout 内部各个控件的尺寸会随之做出相应地调整。

使用 QHBoxLayout 水平布局控件,程序中要提前引入<QHBoxLayout>头文件。QHBoxLayout 类提供有两个构造函数:
QHBoxLayout()
QHBoxLayout(QWidget *parent)
创建 QHBoxLayout 对象时,可以指定父窗口,那么它将作为父窗口中布局其它控件的工具;也可以暂时不指定父窗口,待全部设置完毕后再将其添加到某个窗口中。

QHBoxLayout 类的继承关系是QHBoxLayout->QBoxLayout->QLayout,该类并没有新增任何成员方法,它只能使用从父类继承的成员方法,下表给大家罗列了常用的一些:

表 1 QHBoxLayout常用方法
成员方法 功 能
void QBoxLayout::addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment()) 向布局控件中添加指定的 widget 控件。

默认情况下,新加入控件的 stretch 拉伸系数为 0,表示该控件不会过多占用布局控件的空间;alignment 是一个枚举类型参数,默认的枚举值也是 0,表示该控件会填满占用的整个空间。
void QBoxLayout::addStretch(int stretch = 0) 添加一个空白列,整个窗口中除了控件占用的区域外,其它区域可以由多个(≥0)空白列分摊,分摊比例取余于各个空白列设置的 stretch 的值(又称伸缩系数)。

strech 参数的默认值为 0,表示当窗口很小时,空白列可以不占据窗口空间。当窗口中包含多个 strech 值为 0 的空白列时,它们会平分窗口中的空白区域。
void QBoxLayout::addSpacing(int size) 添加一个 size 大小的固定间距。
void QLayout::setMargin(int margin) 设置布局控件中所有控件的外边距,上、下、左、右外边距的大小都为 margin。默认情况下,所有方向的外边距为 11 px。
void QLayout::setContentsMargins(int left, int top, int right, int bottom) 设置布局控件中所有控件的外边距,可以自定义上、下、左、右外边距的值。
void QBoxLayout::setDirection(Direction direction) 设置布局控件中控件的布局方向,Direction 是一个枚举类型,对于 QVBoxLayout 布局控件,direction 参数的值通常选择 QBoxLayout::TopToBottom(从上到下依次摆放)或者 QBoxLayout::BottomToTop(从下到上依次摆放)。
bool QBoxLayout::setStretchFactor(QWidget *widget, int stretch) 设置布局控件中某个控件的拉伸系数。
bool QBoxLayout::setStretchFactor(QLayout *layout, int stretch) 布局控件内部还可以再放置一个布局控件,并设置它的拉伸系数。

举个简单的例子:
#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QHBoxLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //创建主窗口
    QWidget widget;
    widget.setWindowTitle("QHBoxLayout水平布局");
    //创建水平布局控件
    QHBoxLayout *layout=new QHBoxLayout;
    //设置布局控件中所有控件的布局方向为从右往左依次排列
    layout->setDirection(QBoxLayout::RightToLeft);

    //连续创建 3 个文本框,并设置它们的背景和字体大小
    QLabel lab1("Label1");
    lab1.setStyleSheet("QLabel{background:#dddddd;font:20px;}");
    lab1.setAlignment(Qt::AlignCenter);
    QLabel lab2("Label2");
    lab2.setStyleSheet("QLabel{background:#cccccc;font:20px;}");
    lab2.setAlignment(Qt::AlignCenter);
    QLabel lab3("Label3");
    lab3.setStyleSheet("QLabel{background:#ffffff;font:20px;}");
    lab3.setAlignment(Qt::AlignCenter);

    //将 3 个文本框和 2 个空白列添加到管理器中,它们的拉伸系数比是 2:1:2:3:3
    layout->addStretch(2);
    layout->addWidget(&lab1,1);
    layout->addWidget(&lab2,2);
    layout->addWidget(&lab3,3);
    layout->addStretch(3);

    //将布局控件添加到 widget 窗口中
    widget.setLayout(layout);
    widget.show();
    return a.exec();
}
程序执行结果为:

图 2 QHBoxLayout水平布局实例

关注微信公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由C语言中文网站长运营,每日更新,坚持原创,敢说真话,凡事有态度。

魏雪原二维码
微信扫描二维码关注公众号

优秀文章

金-鹰-国-际-注-册-连-接 必-赢-国-际-官-网-多-少-钱 凯-时-国-际-官-网-app-下-载 cc-娱-乐-国-际-官-网
新-万-博-国-际-入-口 亚-美-国-际-娱-乐-开-户 同-乐-城-国-际-娱-乐-线 万-利-国-际-app-官-网
百-盛-国-际-电-子-娱-乐 爱-拼-国-际-下-载 红-宝-石-国-际-客-户-端-客-服-电-话 环-澳-国-际-注-册
恒-德-国-际-劳-务 明-升-国-际-官-方-网-站 凯-发-国-际-娱-乐-网-址-大-鱼-——-欢-迎-您-!!! www.-通-宝-国-际-222.com
大-西-洋-城-国-际-线-上 伟-易-博-国-际-官-网 新-皇-冠-国-际-app-官-方 新-澳-门-国-际-网-站-视-频
sitemap 中-信-国-际-登-录 皇-家-国-际-平-台 亿-发-国-际-app-首-页