知识点:
网格布局:用 QGridLayout类。
addWidget( ) 括号内有四个参数。分别为行数、列数、所添加的组件占的行数、所添加的组件占的列数。
横向布局:用 QHBoxLayout类。
纵向布局:用 QVBoxLayout类。
例:网格布局
QWidget *CMainWindowWidget::createLeftWidget()
{
QWidget *w =new QWidget();
//网格布局
QGridLayout *layout = new QGridLayout();
for(int i = 0;i<3;i++)
{
QString str_1 = QString::fromLocal8Bit("第%1行").arg(i);
QString str_2 = QString::fromLocal8Bit("第1列%1行").arg(i);
QLabel *label = new QLabel(str_1);
QPushButton *button = new QPushButton(str_2);
//在网格的i行0列加入一个占网格1行0列的label
layout->addWidget(label,i,0,1,1);
//在网格的i行0列加入一个占网格1行1列的button
layout->addWidget(button,i,1,1,1);
}
QPushButton *button_2 = new QPushButton();
button_2->setText("button");
layout->addWidget(button_2,4,0,1,2);
w->setLayout(layout);
return w;
}
编译运行结果如下:
例:纵向布局
QWidget *CTestWidget::createRightWidget()
{
QWidget *w =new QWidget();
//竖向布局
QVBoxLayout *layout = new QVBoxLayout();
QPushButton *button = new QPushButton("button1");
QPushButton *button2 = new QPushButton("button2");
layout->addWidget(button);
layout->addWidget(button2);
w->setLayout(layout);
return w;
}
编译运行结果如下:
例:横向布局
void CTestWidget::createUi()
{
p_leftWidget = createLeftWidget();
p_rightWidget = createRightWidget();
p_bottomWidget = createBottomWidget();
//添加一个横向布局
QHBoxLayout *hLayout = new QHBoxLayout();
hLayout->addWidget(p_leftWidget);
hLayout->addWidget(p_rightWidget);
QVBoxLayout *layout = new QVBoxLayout();
//layout里面可以添加其他布局
layout->addLayout(hLayout);
layout->addWidget(p_bottomWidget);
this->setLayout(layout);
}
编译运行结果如下: