2015-05-01 3 views
-1

Мне нужно сохранить и восстановить положение QToolbars в моем приложении. Когда панели инструментов прикреплены к другой области, я могу сохранить область и назначить ее в функции QMainWindow :: addToolBar. Но когда несколько панелей инструментов прикреплены к одной и той же области, я не знаю, в каком порядке они находятся на экране. Я попыталсяКак получить заказ qtoolbars

QList<QToolBar*> toolbars = findChildren<QToolBar*>(); 

Но это, кажется, вернуть панель инструментов в порядке создания и не так, как в настоящее время проводит на экране (пользователь может перемещать их).

ответ

1

Существует простой и понятный способ сделать то, что вы хотите в Qt. QMainWindow имеет метод saveState(), что

сохраняет текущее состояние панелей инструментов и прикрепляемых виджетов этого MainWindow в.

и способ restoreState(), который делает обратное.

Дополнительную информацию можно найти here.

Для сохранения и восстановления самой геометрии QMainWindow вы все равно можете использовать QWidget::saveGeometry() и QWidget::restoreGeometry().

Пример как в сочетании, которые также могут быть найдены в saveState() «s документации:

Для сохранения геометрии при закрытии окна вы можете реализовать тесное событие так:

void MyMainWindow::closeEvent(QCloseEvent *event) 
{ 
    QSettings settings("MyCompany", "MyApp"); 
    settings.setValue("geometry", saveGeometry()); 
    settings.setValue("windowState", saveState()); 
    QMainWindow::closeEvent(event); 
} 
+0

Спасибо за ваш ответ! Но я хотел бы сохранить состояние пользовательского интерфейса как удобочитаемые строки в ini-файле, а не как двоичные данные. – lightstep

+0

Моя рекомендация заключается в том, чтобы выкопать глубину в исходном коде Qt. :) (Вы знаете, с чего начать) – mhcuervo