Несколько окон. Qt Widgets

311
08 ноября 2017, 02:42

Как в Qt Widgets сделать переход между окнами?

Точней организовать такую структуру, которая при нажатии кнопки, к примеру, создавало другое окно, а это закрывало и в памяти прошлое окно не висело? Использовал stackedwidgets для этого, но там я как понял будет в памяти висеть все другие окна, хотелось бы обойтись без этого.

Answer 1

Например так:

void MyClass::OnButtonClicked()
{
    FirstWindow->close();
    FirstWindow->deleteLater();
    FirstWindow = nullptr;
    SecondWindow = new MyWindow();        
    SecondWindow->show();
}

Здесь FirstWindow->close() должна внутри вызвать QWindow::destroy() и ресурсы нативной оконной подсистемы освободятся. Вызов FirstWindow->deleteLater() удалит сам QObject на следующем цикле обработки сообщений. Наконец все ресурсы освобождены поэтому указатель FirstWindow зануляется.

Далее просто создается новое окно, при этом родителем у него будет глобальный QApplication. Если нужен другой родитель, то нужно его подставить в конструктор.

READ ALSO
Указатели на функции и возвращаемый тип

Указатели на функции и возвращаемый тип

Изучаю C++остановился на теме "Указатели на функции"

260
Как проверить пиксели в QGraphicsScene? [требует правки]

Как проверить пиксели в QGraphicsScene? [требует правки]

(есть точка или нет) Устанавливаю QGraphicsScene для QGraphicsView

323
Задача на поиск в ширину (bfs)

Задача на поиск в ширину (bfs)

Решаю задачу на BFSНа некоторых тестах неправильный ответ

283
Выдаёт - неправильно завершена декларация,помогите найти ошибку

Выдаёт - неправильно завершена декларация,помогите найти ошибку

Вот, исправил некоторые ошибки в Вашем коде, компилируется, выполняется

198