问题:
主窗口上有一个按钮,点击按钮弹出一个子窗口,然后主窗口隐藏;
此时,若关闭子窗口,整个程序就退出了。
需求是:
关闭子窗口时,显示主窗口,程序不要退出。
如下图:
原因是:
在默认的情况下,应用程序会在最后一个可见的窗口退出时,退出整个程序。
详情请查阅帮助文档: setQuitOnLastWindowClosed()
解决办法:
重写子窗口的closeEvent槽函数,在槽函数里发送自定义信号通知主窗口,主窗口收到信号后,显示窗口。
代码如下:
//子窗口
class SubWnd : public QWidget
{
......
protected:
void closeEvent(QCloseEvent *event);
signals:
void subWndClose();
};
void SubWnd::closeEvent(QCloseEvent *event)
{
emit subWndClose();
}
//主窗口
MainWnd::MainWnd(QWidget *parent)
: QWidget(parent)
{
......
connect(&sub, SIGNAL(subWndClose()), this, SLOT(ShowMainWnd()));
}
void MainWnd::on_pushButton_pressed()
{
sub.show();
this->hide();
}
void MainWnd::ShowMainWnd()
{
this->show();
}