qt c++的SetLayout

SetLayout of qt c++

请帮我解决这个qt问题; QWidget::setLayout: 正在尝试在 Login_1“Login_1”上设置 QLayout“”,它已经有一个布局?

Login_1::Login_1(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Login_1)
{
    ui->setupUi(this);

    //The main windows
    QGridLayout* MainLayout = new QGridLayout();
    //The first ligne (username, line 0)
    QLabel* LbNom = new QLabel("User name");
    QLineEdit* LeNom = new QLineEdit();
    MainLayout->addWidget(LbNom,0,0);
    MainLayout->addWidget(LeNom,0,1);

    //The second line (password, line 1)
    QLabel* LbPassword = new QLabel("Password");
    QLineEdit* LePassword = new QLineEdit(this);
    MainLayout->addWidget(LbPassword,1,0);
    MainLayout->addWidget(LePassword,1,1);

    //Login Button(line 2)
    QPushButton* PbLogin = new QPushButton(this);
    PbLogin->setText("Login");
    MainLayout->addWidget(PbLogin,2,0);
    //setLayout(MainLayout);

}

Login_1::~Login_1()
{
    delete ui;
}

感谢您的帮助...

我第一次创建一个新的小部件:

QWidget* Mywidget = new QWidget();

之后,我为这个小部件 (Mywidget) 创建了我的奇怪布局的父级:

    QGridLayout* MainLayout = new QGridLayout(Mywidget);

而且有效