Qt: не удается установить макет в QMainWindow
Я пытаюсь установить свой макет (используя setLayout()
) в своем mainwindow. Он ничего не показывает при запуске:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0)
{
QVBoxLayout *vBoxLayout = new QVBoxLayout;
{
QPushButton *pushButton = new QPushButton(tr("A button"));
vBoxLayout->addWidget(pushButton);
}
setLayout(vBoxLayout);
}
};
Ответы
Ответ 1
Вам нужно изменить последние две строки кода следующим образом:
QWidget *widget = new QWidget();
widget->setLayout(VBoxLayout);
setCentralWidget(widget);
//VBoxLayout->addWidget(new QLayout);
//setLayout(VBoxLayout);
QMainWindow
- частный случай. Вы устанавливаете содержимое этого виджета, помещая макет в новый QWidget
, а затем устанавливая его как центральный виджет.
См. Также этот.