Есть ли простой способ восстановить размеры виджетов в Qt?

StackOverflow https://stackoverflow.com/questions/680844

  •  22-08-2019
  •  | 
  •  

Вопрос

Я ищу способ сохранить размер окон в приложении 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 по Восстановление геометрии окна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top