Qt-基本布局介绍

     Qt中常见的布局管理器有QBoxLayout、QGridLayout、QFormLayout,QHBoxLayout是以水平或者垂直方向来排列部件,而QHBoxLayout和QVBoxLayout是QHBoxLayout的两个便子类,顾名思义QHBoxLayout是以水平方向对部件进行排列,QVBoxLayout以垂直方向对部件进行排列。QGridLayout其中含Grid字眼我们就可以知道它是以网格的形式对部件进行排列。QFormLayout它是以垂直方向对其子部件进行管理,但是其内部的子部件包含两部分:左列为标签,右列为输入字段。 以上是常用的布局管理器。

  对于使用QBoxLayout,其的构造函数的形式如下:

QBoxLayout(QBoxLayout::Direction dir, QWidget *parent = nullptr)

 对于QBoxLayout::Direction有四种取值:

内容含义
QBoxLayout::LeftToRight0部件从左到右进行排列
QBoxLayout::RightToLeft1部件从右到左进行排列
QBoxLayout::TopToBottom2部件从上到下进行排列
QBoxLayout::BottomToTop3部件从下到上进行排列

可以通过下面的方法给QBoxLayout添加子部件:

void addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())//给QBoxLayout添加子控件。
void addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())//给QBoxLayout添加子控件。
void addSpacing(int size)//创建一个空框;该方法主要是为了创建美观的布局,从而需要一些站位的空框。
void addStretch(int stretch = 0)//创建一个空的可拉伸的框,同样是站位作用。
void addLayout(QLayout *layout, int stretch = 0)//向行中添加另外一个Layout框。

对于使用QHBoxLayout,可以通过下面代码实现简单的水平布局:

QWidget *window = new QWidget;
QPushButton *button1 = new QPushButton("One");
QPushButton *button2 = new QPushButton("Two");
QPushButton *button3 = new QPushButton("Three");
QPushButton *button4 = new QPushButton("Four");
QPushButton *button5 = new QPushButton("Five");

QHBoxLayout *layout = new QHBoxLayout;//创建水平布局
layout->addWidget(button1);//添加子控件
layout->addWidget(button2);
layout->addWidget(button3);
layout->addWidget(button4);
layout->addWidget(button5);

window->setLayout(layout);//主界面对话设置布局
 window->show();

效果如下所示:

 对于使用QVBoxLayout,可以通过下面代码实现简单的水平布局:

 QWidget *window = new QWidget;
 QPushButton *button1 = new QPushButton("One");
 QPushButton *button2 = new QPushButton("Two");
 QPushButton *button3 = new QPushButton("Three");
 QPushButton *button4 = new QPushButton("Four");
 QPushButton *button5 = new QPushButton("Five");

 QVBoxLayout *layout = new QVBoxLayout;//创建垂直布局管理器
 layout->addWidget(button1);//添加子控件
 layout->addWidget(button2);
 layout->addWidget(button3);
 layout->addWidget(button4);
 layout->addWidget(button5);

 window->setLayout(layout);//主界面添加布局
 window->show();

 

 对于使用QGridLayout可以通过下面代码实现简单的水平布局对于使用QGridLayout可以通过下面代码实现简单的水平布局

nameLabel = new QLabel(tr("&Name:"));
nameLabel->setBuddy(nameLineEdit);

emailLabel = new QLabel(tr("&Name:"));
emailLabel->setBuddy(emailLineEdit);

ageLabel = new QLabel(tr("&Name:"));
ageLabel->setBuddy(ageSpinBox);

QGridLayout *gridLayout = new QGridLayout;
gridLayout->addWidget(nameLabel, 0, 0);
gridLayout->addWidget(nameLineEdit, 0, 1);
gridLayout->addWidget(emailLabel, 1, 0);
gridLayout->addWidget(emailLineEdit, 1, 1);
gridLayout->addWidget(ageLabel, 2, 0);
gridLayout->addWidget(ageSpinBox, 2, 1);
setLayout(gridLayout);

对于使用QFormLayout可以通过下面代码实现简单的水平布局 

    QLineEdit *nameLineEdit = new QLineEdit();
    QLineEdit *emailLineEdit = new QLineEdit();
    QLineEdit *ageSpinBox = new QLineEdit();
    QFormLayout *formLayout = new QFormLayout;
    formLayout->addRow(tr("&Name:"), nameLineEdit);
    formLayout->addRow(tr("&Email:"), emailLineEdit);
    formLayout->addRow(tr("&Age:"), ageSpinBox);
    setLayout(formLayout);

效果如下:

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值