QT开发中文网

QMainWindow在调用show之前,创建多个子Widget,会被最新的覆盖显示,即使不是中心部件

您好,这种情况出现的原因可能是您在调用 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 等其他布局类进行组合。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1725

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?