原因是那个mainWindow本身就具有Layout了,这个Layout包含了顶部的菜单栏、工具栏,中部的centralWidget和底部的状态栏。
所以你不能再给mainwindow添加QVBoxLayout了,你只能给centralWidget添加layout。
只要将setLayout(mainLayout);
这一句改成:
this->centralWidget()->setLayout(mainLayout);就行了。
改过之后:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QVBoxLayout *mainLayout = new QVBoxLayout;
Title = new QLabel(tr("校园导航系统"),this);
Title->resize(550,100);
Title->setAlignment(Qt::AlignCenter);
Title->setStyleSheet("background-color:red;font-size:40px; color:blue");
Greeting = new QLabel(tr("Welcome"),this);
Greeting->resize(550,100);
Greeting->setStyleSheet("background-color:yellow;font-size:20px; color:blue");
mainLayout->addWidget(Title);
mainLayout->addWidget(Greeting);
this->centralWidget()->setLayout(mainLayout);
//++++++++
setWindowTitle(tr("校园导航系统"));
resize(550,600);
}