使用Qt为MainWindow设置layout时报错
代码:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
radiusLabel = new QLabel(this);
radiusEdit = new QLineEdit(this);
ansLabel = new QLabel(this);
calcButton = new QPushButton(this);
QGridLayout *layout = new QGridLayout(this);
layout->addWidget(radiusLabel, 0, 0);
layout->addWidget(radiusEdit, 0, 1);
layout->addWidget(ansLabel, 1, 0);
layout->addWidget(calcButton, 1, 1);
setLayout(layout);
}
运行时只出现了一个控件且出现warning:
QLayout: Attempting to add QLayout “” to MainWindow “”, which already has a layout.
估计是MainWindow已经有默认的layout了,所以不能这么写。
换一种写法:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
mainWidget = new QWidget(this);
this->setCentralWidget(mainWidget);
radiusLabel = new QLabel(this);
radiusEdit = new QLineEdit(this);
ansLabel = new QLabel(this);
calcButton = new QPushButton(this);
QGridLayout *layout = new QGridLayout(this);
layout->addWidget(radiusLabel, 0, 0);
layout->addWidget(radiusEdit, 0, 1);
layout->addWidget(ansLabel, 1, 0);
layout->addWidget(calcButton, 1, 1);
mainWidget->setLayout(layout);
}
这样就可以了。