私はデザイナーではなくコードを使ってウィジェットのレイアウトを手動で設定しようとしていますが、間違って、私はこの警告を得るために:QWidget :: setLayout:既にレイアウトを持っているWidget ""にQLayoutを設定しようとしています
QWidget::setLayout: Attempting to set QLayout "" on Widget "", which already has a layout
をし、またレイアウトは(ラベルが代わりに下の、一番上にある)台無しにされています。
これは、問題を再現するサンプルコードです:
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);
}
WOW、単純な誤りで、この作品のすべて: QHBoxLayout * buttonLayout =新しいQHBoxLayout (); の代わりに の代わりに QHBoxLayout * buttonLayout = new QHBoxLayout(this); – user1369511
PySideの鉱山と同じですが、hl = QtGui.QHBoxLayout(self)をhl = QtGui.QHBoxLayout()に変更すると、 – gseattle