QT5小部件之间的切换大小问题

我尝试在QT5中的两个不同小部件之间切换。
第一个问题是第一个窗口在第二个窗口的背景中可见。我通过签入“自动填充背景”来解决这个问题。现在我可以在它们之间切换,但如果我调整它们的大小,它只会调整主要内容的大小

这两个小部件都有网格布局

调整大小问题

我是QT5的新手,那么有没有更好的方法在两个小部件之间切换而不出现这个问题呢

我尝试使用wMessages=newmessages()隐藏()但我的程序在返回后崩溃


代码:

mainwindow.h:

\ifndef主窗口
#定义主窗口
#包括<QMainWindow>
#包括“messages.h”
QT_开始名称空间
命名空间Ui{class MainWindow;}
QT_END_名称空间
类主窗口:公共QMainWindow
{
Q_对象
公众:
主窗口(QWidget*parent=nullptr);
~main窗口();
专用插槽:
单击消息时无效();
私人:
Ui::MainWindow*Ui;
消息*wMessages;
};
#endif//main窗口

mainwindow.cpp:

#包括“mainwindow.h”
#包括“ui_main window.h”
主窗口::主窗口(QWidget*父窗口)
:QMainWindow(父级)
,ui(新ui::Main窗口)
{
用户界面->设置用户界面(本);
}
MainWindow::~MainWindow()
{
删除用户界面;
}
void主窗口::在消息上单击()
{
wMessages=新消息(此消息);
wMessages->show();
}

信息.h:

\ifndef消息
#定义消息
#包括<QWidget>
名称空间用户界面{
类消息;
}
类消息:公共QWidget
{
Q_对象
公众:
显式消息(QWidget*parent=nullptr);
~Messages();
QString新闻生成器();
专用插槽:
单击“”时无效;
单击按钮时无效();
私人:
Ui::消息*Ui;
};
#endif//MESSAGES\u H

messages.cpp:

#包括“messages.h”
#包括“ui_messages.h”
消息::消息(QWidget*父项):
QWidget(母公司),
ui(新ui::消息)
{
用户界面->设置用户界面(本);
}
消息::~Messages()
{
删除用户界面;
}
无效消息::在单击时返回()
{
此->关闭();
QWidget*parent=this->parentWidget();
父级->显示();
}

编辑1-工作主窗口按钮(来自G.M.的回答):

void主窗口::在消息上单击()
{
wPlaner=新刨床();
QMainWindow::setCentralWidget(wPlaner);
}

更新(基于评论):

最好的解决方案是使用QStackedWidget在视图之间导航

Docu:https://doc.qt.io/qt-5/qstackedwidget.html#details


按钮的示例代码:

//返回到第一个视图
void主窗口::在单击时
{
ui->stackedWidget->setCurrentIndex(0);
}

发表评论