欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt-基本布局介绍

程序员文章站 2022-06-14 15:31:28
...

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

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

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

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

内容 含义
QBoxLayout::LeftToRight 0 部件从左到右进行排列
QBoxLayout::RightToLeft 1 部件从右到左进行排列
QBoxLayout::TopToBottom 2 部件从上到下进行排列
QBoxLayout::BottomToTop 3 部件从下到上进行排列

可以通过下面的方法给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();

效果如下所示:

Qt-基本布局介绍

 对于使用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();

 Qt-基本布局介绍

 对于使用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);

Qt-基本布局介绍

对于使用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);

效果如下:

 Qt-基本布局介绍

 

 

 

 

 

 

 

 

 

相关标签: Qt软件开发