您好,这种情况出现的原因可能是您在调用 QMainWindow 的 show() 函数之前创建了多个子 QWidget,并将它们添加到了 QMainWindow 中。默认情况下,QMainWindow 的中心部件会占据整个窗口,其他子 Widget 会被遮挡。
解决方法之一是通过设置 QMainWindow 的布局来管理子 Widget。可以使用 QHBoxLayout 或 QVBoxLayout 将需要显示的子 Widget 添加到一个容器中,再将该容器作为 QMainWindow 的中心部件设置即可。例如:
// 创建容器和两个子 Widget
QWidget* container = new QWidget;
QPushButton* btn1 = new QPushButton("Button 1", container);
QPushButton* btn2 = new QPushButton("Button 2", container);
// 创建布局并将两个子 Widget 添加到容器中
QVBoxLayout* layout = new QVBoxLayout(container);
layout->addWidget(btn1);
layout->addWidget(btn2);
// 设置容器为 QMainWindow 的中心部件
QMainWindow* mainWindow = new QMainWindow;
mainWindow->setCentralWidget(container);
mainWindow->show();
这样,在调用 QMainWindow 的 show() 函数后,两个子 Button 就会按照指定的布局显示在窗口上。如果需要更灵活的布局方式,还可以使用 QGridLayout、QStackedLayout 等其他布局类进行组合。