Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt窗口小部件在布局上重叠_C++_Qt_User Interface - Fatal编程技术网

C++ Qt窗口小部件在布局上重叠

C++ Qt窗口小部件在布局上重叠,c++,qt,user-interface,C++,Qt,User Interface,我的主窗口的构造函数中有以下代码,它扩展了QMainWindow类: QHBoxLayout* mainLayout = new QHBoxLayout(this); QPushButton* button0 = new QPushButton(this); button0->setText("Button 0"); mainLayout->addWidget(button0); QPushButton* button1 = new QPushButton(this); butt

我的主窗口的构造函数中有以下代码,它扩展了
QMainWindow
类:

QHBoxLayout* mainLayout = new QHBoxLayout(this);

QPushButton* button0 = new QPushButton(this);
button0->setText("Button 0");
mainLayout->addWidget(button0);

QPushButton* button1 = new QPushButton(this);
button1->setText("Button 1");
button1->setMinimumWidth(500);
mainLayout->addWidget(button1);

QPushButton* button2 = new QPushButton(this);
button2->setText("Button 2");
mainLayout->addWidget(button2);

setMinimumSize(700,480);
this->setLayout(mainLayout);

然而,当我试着运行它时,按钮似乎在左上角重叠。我应该在这里更改什么?

检查控制台输出。通常,默认情况下主窗口确实有布局,那么您只需要在中心窗口小部件上设置布局,而不是在窗口本身上设置布局:

this->centralWidget()->setLayout(mainLayout);
如果中心小部件不存在(例如,您删除了自动生成的.ui文件),则只需手动创建它:

QWidget* centralWidget = new QWidget(this);
setCentralWidget(centralWidget);
QHBoxLayout* mainLayout = new QHBoxLayout(centralWidget);

QPushButton* button0 = new QPushButton(this);
button0->setText("Button 0");
mainLayout->addWidget(button0);

QPushButton* button1 = new QPushButton(this);
button1->setText("Button 1");
button1->setMinimumWidth(500);
mainLayout->addWidget(button1);

QPushButton* button2 = new QPushButton(this);
button2->setText("Button 2");
mainLayout->addWidget(button2);

setMinimumSize(700,480);

控制台显示
QLayout:试图将QLayout“”添加到MainWindow“”,MainWindow“”已经有一个布局
,而
按钮2
似乎占据了整个窗口。用
this->centralWidget()
替换
this
会导致seg故障。@Henry W.这条消息显然就是原因。您是否有一些自动生成的行,如
ui->setupUi(此)在编码之前?如果是,则尝试
ui->centralWidget->…
,如果不是,则只需将布局添加到现有的oneNo中即可。我删除了自动生成的ui文件。将布局添加到现有布局中是什么意思?