首页 > 解决方案 > 如何隐藏和显示主窗口?

问题描述

我正在创建一个有两个 MainWindow 的应用程序。单击按钮后,将显示第二个 MainWindow。但是如果在第一个按钮的代码中我给了hide()MainWindow1,我就不能再发送它了。

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    hide();
    two = new MainWindow2 (this);
    two -> show();

}



#include "mainwindow2.h"
#include "ui_mainwindow2.h"
#include "mainwindow.h"

MainWindow2::MainWindow2(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow2)
{
    ui->setupUi(this);
}

MainWindow2::~MainWindow2()
{
    delete ui;
}

void MainWindow2::on_pushButton_clicked()
{

    MainWindow w;
    w.show();
}

标签: c++qtshow-hide

解决方案


考虑以下代码...

void MainWindow2::on_pushButton_clicked()
{

    MainWindow w;
    w.show();
}

MainWindow实例w是函数的本地实例,一旦超出范围就会被销毁。

您的意图(至少对我而言)有点不明确,但我的猜测是您想MainWindow2::on_pushButton_clicked重新展示原始MainWindow. 如果是这样,那么你可以简单地做......

void MainWindow2::on_pushButton_clicked ()
{
    if (auto *w = parentWidget())
        w->show();
}

因为当前MainWindow2实例是使用原始实例MainWindow作为其父级创建的。


推荐阅读