背景:以QGroupBox为father widget,用VBoxLayout的布局排版多个checkBox。接下来解决三个问题:
(1)在VBoxLayout中增添checkBox并显示
(2)从VBoxLayout中删除checkBox
(3)切换groupBox中的界面
在QGroupBox中以VBoxLayout添加子widget (checkBox)
失败的案例:
code:
ui->setupUi(this);
QVBoxLayout layout;
QCheckBox box1("box1");
QCheckBox box2("box2");
QCheckBox box3("box3");
layout.addStretch(1);
layout.addWidget(&box1);
layout.addStretch(1);
layout.addWidget(&box2);
layout.addStretch(1);
layout.addWidget(&box3);
layout.addStretch(1);
wui->groupBox->setLayout(&layout);
关键点:
(1)需要在groupBox中加上一个father widget: widget
(2)设置widget的几何形状和groupBox保持一致,需注意的是widget设置geometry的时候QRect是相对于groupBox而言的。
(3)在widget中以VBoxLayout的方式添加子widget: checkBox ,且要注明checkBox的father widget是widget。
(4)最后要将widget show出来。
ui->setupUi(this);
QVBoxLayout layout;
QWidget *widget = new QWidget(ui->groupBox);
QRect rect = ui->groupBox->geometry();
rect.setX(0); // X and Y is related to parent widget
rect.setY(0);
widget->setGeometry(rect);
widget->