QWidget::setLayout: Попытка установить QLayout "" для виджета "", который уже имеет макет

Я пытаюсь установить макет виджета вручную с помощью кода (не в Designer), но Я делаю что-то не так, потому что получаю это предупреждение:

QWidget::setLayout: Попытка установить QLayout "" на виджет "", у которого уже есть макет

А еще макет испорчен (метка находится вверху, а не внизу).

Это пример кода, который воспроизводит проблему:

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);
}
14
задан sashoalm 15 April 2014 в 07:22
поделиться