Есть ли простой способ восстановить размеры виджетов в Qt?
Вопрос
Я ищу способ сохранить размер окон в приложении Qt.
Я видел, что есть возможность использовать следующий метод для каждого виджета:
saveGeometry()
Но на самом деле, я не нахожу этот метод удовлетворительным.Есть ли что-то вроде setAutosaveGeometry(True)
?
Особенно я ищу способ сохранить ширину столбцов таблицы.
Решение
В QHeaderView (Просмотр QHeaderView) класс также имеет два метода для сохранения и восстановления своего состояния в QByteArray и из него:saveState()и restoreState()
Заголовки табличного представления доступны с помощью методов horizontalHeader() и verticalHeader().
Другие советы
saveGeometry возвращает значение QByteArray, вам нужно его где-то сохранить.
Пример:
void MainWindow::closeEvent(QCloseEvent *event){ QSettings settings; settings.setValue("geometry", saveGeometry()); }
Для чтения геометрии вызовите функцию restoreGeometry:
MainWindow::MainWindow(QWidget *parent):QMainWindow(parent) { [...] QSettings settings; restoreGeometry(settings.value("geometry").toByteArray()); [...] }
Чтобы узнать больше о геометрии окна, пожалуйста, прочитайте документация
Смотрите документацию Qt по Восстановление геометрии окна.