一、问题描述
在使用新建的MainWindow派生出来的window类设置Qlayout遇到的问题:
//创建一个主布局 这里如果加了this,依然会提示错误信息,这里不能加this
QGridLayout *mainLayout = new QGridLayout(this);
二、分析原因
MainWindow类派生出来的子类,默认情况下是有Layout的,因此在此设置Layout会提示警告。
对于QWidget或者QDialog设置布局没有这样的问题,因为这两个类默认是没有Layout的,因此在设置布局的时候,没有这样的问题。
三、解决问题
- 在Window类中创建QWidget。
QWidget * widget = new QWidget;
- 将QWidget对象设置为中心Widget
this->setCentralWidget(widget);
- 设置Layout。
QVBoxLayout *layout = new QVBoxLayout(this);
- 设置对象widget的布局风格。
widget->setLayout(layout);
- widget中添加控件。
cbox = new QCheckBox(this);
cbox->setText("choose");
cbox->setChecked(false);
button = new QPushButton(this);
layout->addWidget(cbox);
layout->addWidget(button);