QBoxLayout
QBoxLayout是一种排列的控件,包括有继承它的QHBoxLayout以及QVBoxLayout。QHBoxLayout为水平排列控件而QVBoxLayout则为垂直排列控件。二者在使用方法上几乎相同,仅仅在布局显示上有所区别。
以下则由程序来说明两者的使用方法:
QPushButton *pbtn1 = new QPushButton(this);
QPushButton *pbtn2 = new QPushButton(this);
QPushButton *pbtn3 = new QPushButton(this);//设置三个按钮
pbtn1 -> setText("button1");
pbtn2 -> setText("button2");
pbtn3 -> setText("button3");
QVBoxLayout *playout = new QVBoxLayout(this);//设置垂直排列
//QHBoxLayout *playout = new QHBoxLayout(this);//设置水平排列
playout -> addWidget(pbtn1);//添加控件按钮
playout -> addWidget(pbtn2);
playout -> addWidget(pbtn3);
setLayout(playout);
由上述程序以及对应的图则可以看出QBoxLayout中QHBoxLayout以及QVBoxLayout的简单使用方式。即将设置的控件按水平或垂直的方式显示。
QGridLayout
网格布局排列则是可以将一些控件根据需求放置在网格中,将其所处的空间划分成行和列,再将设计的控件放置在设计好的位置。
程序如下:
QPushButton *btn1 = new QPushButton("btn1",this);
QPushButton *btn2 = new QPushButton("btn2",this);
QPushButton *btn3 = new QPushButton("btn3",this);
QPushButton *btn4 = new QPushButton("btn4",this);
QPushButton *btn5 = new QPushButton("btn5",this);//按钮控件
QGridLayout *playout = new QGridLayout(this);//设计网格布局
playout->addWidget(btn1,0,0,1,1);
playout->addWidget(btn2,0,1,1,1);
playout->addWidget(btn3,1,0,1,2);
playout->addWidget(btn4,2,0);
playout->addWidget(btn5,3,1);//添加按钮部件以及按钮所处位置。
playout -> setHorizontalSpacing(10);
playout -> setVerticalSpacing(10);//设置间距
playout -> setContentsMargins(10,10,10,10);//设置边距
setLayout(playout);
上述程序中添加按钮的过程也需要设置按钮部件的位置以及大小,若未定义则按默认设置。如btn3中所设:playout->addWidget(btn3,1,0,1,2);其含义即为添加btn3部件,使其位于第二行第一列,占据一行两列。所呈现出来的图则如下:
QFormLayout
QFormLayout是可以将标签与输入结合的布局结构。
QLineEdit *pInput1 = new QLineEdit(this);
QLineEdit *pInput2 = new QLineEdit(this);
QLineEdit *pInput3 = new QLineEdit(this);
QFormLayout *playout = new QFormLayout();
playout->addRow(("input1:"), pInput1);
playout->addRow(("input2:"), pInput2);
playout->addRow(("input3:"), pInput3);
playout->setSpacing(10);
setLayout(playout);