QWidget :: setLayout: Tentative de définir QLayout "" sur Widget "", qui a déjà une mise en page

Je suis en train de définir la mise en page d'un widget manuellement à l'aide de code (pas dans Designer), mais je suis en train de faire quelque chose de mal, parce que je reçois cet avertissement:

QWidget::setLayout: Tentative de définition de QLayout "", "Widget", qui a déjà une mise en page

Et aussi la mise en page est foiré (le label est en haut au lieu du bas).

Ceci est un exemple de code qui reproduit le problème:

Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
    QLabel *label = new QLabel("Test", this);
    QHBoxLayout *hlayout = new QHBoxLayout(this);
    QVBoxLayout *vlayout = new QVBoxLayout(this);
    QSpacerItem *spacer = new QSpacerItem(40, 20, QSizePolicy::Fixed);
    QLineEdit *lineEdit = new QLineEdit(this);
    hlayout->addItem(spacer);
    hlayout->addWidget(lineEdit);
    vlayout->addLayout(hlayout);
    vlayout->addWidget(label);
    setLayout(vlayout);
}

source d'informationauteur user1369511