Как сделать чтобы при нажатии на кнопку открывалась одна форма а другая не показывалась

при нажатии на кнопку открывается другая форма, но сзади остается начальная форма Мне нужно сделать чтобы она скрывалась. Пробовал писать this->close и hide, но приложение просто закрывается

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void openRecipeForm();
    void openWeekPlanner();
    void openShoppingList();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "recipeform.h"
#include "weekplanner.h"
#include "shoppinglist.h"

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

    // Связываем кнопки с действиями
    connect(ui->addRecipeButton, &QPushButton::clicked, this, &MainWindow::openRecipeForm);
    connect(ui->weekPlannerButton, &QPushButton::clicked, this, &MainWindow::openWeekPlanner);
    connect(ui->shoppingListButton, &QPushButton::clicked, this, &MainWindow::openShoppingList);
}

MainWindow::~MainWindow() {

    delete ui;
}

void MainWindow::openRecipeForm() {
    recipeform *form = new recipeform(this);
    form->show();
}

void MainWindow::openWeekPlanner() {
    weekplanner *planner = new weekplanner(this);
    planner->show();
}

void MainWindow::openShoppingList() {
    shoppinglist *list = new shoppinglist(this);
    list->show();
}

Ответы (1 шт):

Автор решения: charango

Используйте hide() или setVisible(false), это должно работать.

→ Ссылка