刚学Qt的时候,我们可能会对布局使用的不是很熟练,手撸界面代码时候经常会遇到对一些数量不一的部件进行布局,如下图,我们想让他们做到上下左右对齐,如何实现呢?
先上这个布局的代码:
//按钮组
QVBoxLayout* btnVLayout = new QVBoxLayout();
QHBoxLayout* btnHLayout1 = new QHBoxLayout();
QPushButton* initBtn = new QPushButton();
initBtn->setText("1");
initBtn->setFixedSize(90, 40);
QPushButton* openBtn = new QPushButton();
openBtn->setText("2");
openBtn->setFixedSize(90, 40);
QPushButton* closeBtn = new QPushButton();
closeBtn->setText("3");
closeBtn->setFixedSize(90, 40);
btnHLayout1->addWidget(initBtn);
btnHLayout1->addWidget(openBtn);
btnHLayout1->addWidget(closeBtn);
// btnHLayout1->addStretch();
// btnHLayout1->setSpacing(20);
QHBoxLayout* btnHLayout2 = new QHBoxLayout();
QPushButton* saveBtn = new QPushButton();
saveBtn->setText("4");
saveBtn->setFixedSize(90, 40);
QPushButton* ltcBtn = new QPushButton();
ltcBtn->setText("5");
ltcBtn->setFixedSize(90, 40);
btnHLayout2->addWidget(saveBtn);
btnHLayout2->addWidget(ltcBtn);
// btnHLayout2->addStretch();
// btnHLayout2->setSpacing(20);
btnVLayout->addLayout(btnHLayout1);
btnVLayout->addLayout(btnHLayout2);
this->setLayout(btnVLayout);
仅仅使用水平布局和垂直布局是无法做到上下左右对齐,但是使用弹簧小部件就可以将多行数量不一的部件做到上下对齐,将上方代码段注释掉的代码打开就可以了,具体作用可以去查Qt文档。