Как получить заказ на qtoolbars
Мне нужно сохранить и восстановить положение QToolbars в моем приложении. Когда панели инструментов прикреплены к другой области, я могу сохранить область и назначить ее в функции QMainWindow::addToolBar. Но когда несколько панелей инструментов пристыкованы к одной и той же области, я не знаю, в каком порядке они сейчас находятся на экране. Я старался
QList<QToolBar*> toolbars = findChildren<QToolBar*>();
Но это похоже на то, что панели инструментов возвращаются в порядке их создания, а не как в настоящее время на экране располагаются аранжировки (пользователь может перемещать их).
1 ответ
В Qt есть простой и простой способ делать то, что вы хотите. QMainWindow
есть метод saveState()
тот
сохраняет текущее состояние панелей инструментов и основных виджетов этого главного окна.
и метод restoreState()
это делает наоборот.
Дополнительную информацию можно найти здесь.
Сохранить и восстановить QMainWindow
Сама геометрия вы все еще можете использовать QWidget::saveGeometry()
а также QWidget::restoreGeometry()
,
Пример обоих сочетаний, которые также можно найти в saveState()
Документация:
Чтобы сохранить геометрию при закрытии окна, вы можете реализовать событие закрытия следующим образом:
void MyMainWindow::closeEvent(QCloseEvent *event) { QSettings settings("MyCompany", "MyApp"); settings.setValue("geometry", saveGeometry()); settings.setValue("windowState", saveState()); QMainWindow::closeEvent(event); }