我想通過代碼手動設置窗口小部件的佈局(不是在Designer中),但我正在做一些事情錯誤的,因爲我得到這個警告: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