我尝试在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);
}