Qt QMainWindow удаление центрального виджета - PullRequest
6 голосов
/ 14 февраля 2012

мое приложение требует, чтобы пользователь переключался между несколькими экранами.Я делаю это, создавая разные QFrames для каждого экрана, а затем устанавливая Qframes как центральные виджеты в MainWindow.Проблема в том, что каждый раз, когда я вызываю setCentralWidget (frame), старый кадр удаляется, и я не могу получить к нему доступ позже.Как сохранить этот старый фрейм, чтобы я мог получить к нему доступ позже?

Пожалуйста, дайте мне знать, если я неясен в своем вопросе.

Ответы [ 3 ]

9 голосов
/ 14 февраля 2012

Вы можете удалить свой центральный виджет из QMainWidow, перерисовывая его. Затем вы можете установить новый centralWidget;

QWidget* savedWidget = mainWnd->centralWidget();
savedWidget->setParent(0);//now it is saved
mainWnd->setCentralWidget(newWidget);

Также использование QStackedWidget возможно будет лучшим решением.

4 голосов
/ 27 октября 2012

QStackedWidget - элегантное решение этой проблемы, вы можете узнать, как правильно его использовать здесь .

0 голосов
/ 14 февраля 2012

Вы можете поэкспериментировать с .hide () /. Show () на соответствующих подвиджетах, чтобы выполнить это. Но лучшим решением для вашего случая почти наверняка будет использование QTabWidget или QStackedWidget .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...