Как получить заказ на 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);
}
Другие вопросы по тегам