Сохранение настроек приложения

Сохранение настроек приложения

В конструкторе MainWindow мы уже вызывали функцию readSettings() для загрузки сохраненных приложением настроек. Аналогично в функции closeEvent() мы вызывали writeSettings() для сохранения настроек. Эти функции являются последними функциями—членами MainWindow, которые необходимо реализовать.

01 void MainWindow::writeSettings()

02 {

03 QSettings settings("Software Inc.", "Spreadsheet");

04 settings.setValue("geometry", geometry());

05 settings.setValue("recentFiles", recentFiles);

06 settings.setValue("showGrid", showGridAction->isChecked());

07 settings.setValue("autoRecalc", autoRecalcAction->isChecked());

08 }

Функция writeSettings() сохраняет «геометрию» окна (положение и размер), список последних открывавшихся файлов и опции Show Grid (показать сетку) и Auto—Recalculate (автоматический повтор вычислений).

По умолчанию QSettings сохраняет настройки приложения в месте, которое зависит от используемой платформы. В системе Windows для этого используется системный реестр; в системе Unix данные хранятся в текстовых файлах; в системе Mac OS X для этого используется прикладной интерфейс задания установок Core Foundation Preferences.

В аргументах конструктора задаются название организации и имя приложения. Эта информация используется затем (причем по-разному для различных платформ) для определения места расположения настроек.

QSettings хранит настройки в виде пары ключ—значение. Здесь ключ подобен пути файловой системы. Подключи можно задавать, используя синтаксис, подобный тому, который применяется при указании пути (например, findDialog/matchCase), или используя beginGroup() и endGroup():

settings.beginGroup("findDialog");

settings.setValue("matchCase", caseCheckBox->isChecked());

settings.setValue("searchBackward", backwardCheckBox->isChecked());

settings.endGroup();

Значение value может иметь типы int, bool, double, QString, QStringList или любой другой, поддерживаемый QVariant, включая зарегистрированные пользовательские типы.

01 void MainWindow::readSettings()

02 {

03 QSettings settings("Software Inc.", "Spreadsheet");

04 QRect rect = settings.value("geometry",

05 QRect(200, 200, 400, 400)).toRect();

06 move(rect.topLeft());

07 resize(rect.size());

08 recentFiles = settings.value("recentFiles").toStringList();

09 updateRecentFileActions();

10 bool showGrid = settings.value("showGrid", true).toBool();

11 showGridAction->setChecked(showGrid);

12 bool autoRecalc = settings.value("autoRecalc", true).toBool();

13 autoRecalcAction->setChecked(autoRecalc);

14 }

Функция readSettings() загружает настройки, которые были сохранены функцией writeSettings(). Второй аргумент функции value() определяет значение, принимаемое по умолчанию в случае отсутствия запрашиваемого параметра. Принимаемые по умолчанию значения будут использованы при первом запуске приложения. Поскольку второй аргумент не задан для списка недавно используемых файлов, этот список будет пустым при первом запуске приложения.

Qt содержит функцию QWidget::setGeometry(), которая дополняет функцию QWidget:: geometry(), однако они не всегда работают должным образом в системе X11 из-за ограничений многих оконных менеджеров. По этой причине мы используем вместо них функции move() и resize(). (Подробную информацию по тому вопросу можно найти по адресу http://doc.trolltech.com/4.1/geometry.html.)

Весь программный код MainWindow, относящийся к объектам QSettings, мы разместили в функциях readSettings() и writeSettings(); такой подход лишь один из возможных. Объект QSettings может создаваться для запроса или модификации каких-нибудь настроек в любой момент во время выполнения приложения и из любого места программы.

Теперь мы завершили построение главного окна MainWindow приложения Электронная таблица. В следующих разделах мы рассмотрим возможность модификации приложения Электронная таблица для обеспечения работы со многими документами и реализации экранных заставок. Мы завершим реализацию этих функций, в том числе обеспечивающих обработку формул и сортировку, в следующей главе.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Избегайте настроек

Из книги Getting Real (на русском) [вычитывается] автора 37signals

Избегайте настроек Примите решение о деталяхВы сталкиваетесь с ограничением: сколько сообщений должно быть на странице? Ваша первая мысль сделать выбор 25, 50 или 100. Это легкий выход. Просто примите решение, как сделать лучше. И выберите одно число.Настройки — уход от пути


Блокировка компьютера и его настроек

Из книги Компьютер и здоровье автора Баловсяк Надежда Васильевна

Блокировка компьютера и его настроек Пользование ребенка компьютером всегда означает проблемы для родителей. Как бы высоко компьютер ни стоял, рано или поздно юный исследователь дотянется до него и захочет нажать пару кнопок. Результатом этого может быть потеря данных


Сохранение и восстановление настроек

Из книги КОМПАС-3D V10 на 100 % автора Кидрук Максим Иванович

Сохранение и восстановление настроек Изучив все описанное выше, вы теперь можете изменять интерфейс и параметры системы, удобно подстраивая их под свои потребности или специфические задачи. Однако очень часто возникают различные неприятные ситуации, связанные с


Окно настроек

Из книги Photoshop. Лучшие фильтры автора Бондаренко Сергей

Окно настроек Все фильтры, которые входят в состав пакета nik Color Efex Pro, имеют большое количество настроек. Это позволяет добиваться совершенно разных результатов при использовании одного и того же фильтра с разными значениями параметров. Еще одна особенность этих


ГЛАВА 8 ABAP для разработки настроек

Из книги Внедрение SAP R/3: Руководство для менеджеров и инженеров автора Кале Вивек

ГЛАВА 8 ABAP для разработки настроек Происхождение АВАР Язык программирования АВАР/4 появился в 80-е годы, и с тех пор он развивается и совершенствуется с каждым релизом SAP R/3. Все приложения R/3 разрабатывались на АВАР/4. Зародился этот язык как язык программирования, созданный


Установка локали (локальных настроек)

Из книги Справочник по PHP автора

Установка локали (локальных настроек) setlocaleУстановка региональных настроек.Синтаксис:string SetLocale(string category, string locale);Функция setlocale устанавливает текущую локаль, с которой будут работать функции преобразования регистра символов, вывода даты-времени и т.д. Вообще говоря, для


Глава 31 Редактор настроек GNOME

Из книги Руководство по переходу на Ubuntu 10.04 LTS «Lucid Lynx» автора Неворотин Вадим

Глава 31 Редактор настроек GNOME Я уже подробно рассказывал про настройку внешнего вида GNOME и некоторых других его параметров, теперь же я расскажу, как и где все эти настройки на самом деле хранятся.В GNOME существует централизованная система управления всеми параметрами


Появилось больше настроек при создании нового соединения

Из книги Бесплатные разговоры через Интернет автора Фрузоров Сергей

Появилось больше настроек при создании нового соединения Для того чтобы создать новое соединение, нужно сначала перейти в нужную папку, потом нажать правую кнопку мыши и выбрать Новое соединение. На экране откроется одноименное диалоговое окно (рис. 8.38). Оно нам немножко


1.10.5. Изменение настроек пользователя

Из книги Самоучитель работы на Macintosh автора Скрылина Софья

1.10.5. Изменение настроек пользователя Стандартный пользователь имеет возможность, не будучи администратором компьютера, изменять свои личные настройки в окне Учетные записи (Accounts): осуществить смену пароля и картинки (смена картинки была рассмотрена в разд. 1.10.4), а также


4.5.3. Изменение настроек, заданных по умолчанию

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

4.5.3. Изменение настроек, заданных по умолчанию По умолчанию для отображения и скрытия рабочей области приложения Dashboard используется клавиша <F12>. Но умолчания можно изменить в окне мини-утилиты Expos? и Spaces на вкладке Expos? (рис. 4.64). Для открытия этого окна следует вызвать


10.2.5. Сохранение настроек поиска

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

10.2.5. Сохранение настроек поиска Вы в основном ищете страницы только на русском? Вам надоело каждый раз увеличивать количество результатов, отображаемых на одной странице? Тогда зайдите в настройки поиска (рис. 10.5). Ссылка Настройки находится рядом с полем ввода ключевых


13.7. Оптимизация настроек сервера DNS

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

13.7. Оптимизация настроек сервера DNS Как любой хороший администратор, вы хотите, чтобы ваш сервер DNS быстро обслуживал запросы клиентов. Но к вашему серверу могут подключаться пользователи не из вашей сети, а, например, из сети конкурирующего провайдера. Тогда ваш сервер


26.2.2. Тестирование настроек Web-сервера

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

26.2.2. Тестирование настроек Web-сервера Протестируем Web-сервер. Откройте браузер и введите адрес: http://localhost Должна открыться страница, изображенная на рис. 26.4. Теперь протестируем поддержку PHP. Поместите файл test.php в каталог /var/www/. Это можно сделать с помощью команды: sudo nano


4.3.2. Изменение настроек по умолчанию

Из книги Цифровой журнал «Компьютерра» № 217 автора Журнал «Компьютерра»

4.3.2. Изменение настроек по умолчанию Давайте теперь посмотрим, откуда берутся значения по умолчанию. Все это хранится в файле /etc/default/useradd. Взглянем на содержимое этого файла:# useradd defaults fileGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bash SKEL=/etc/skelЭтот файл можно редактировать вручную или


Как защитить браузер от нежелательных изменений настроек Олег Нечай

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

Как защитить браузер от нежелательных изменений настроек Олег Нечай Опубликовано 21 марта 2014 Лишиться привычных настроек браузера проще простого: для этого достаточно зайти на какой-нибудь непорядочный сайт или скачать бесплатное приложение,


29.4.5. Вывод на печать текущих настроек Web–среды с помощью ссылки

Из книги автора

29.4.5. Вывод на печать текущих настроек Web–среды с помощью ссылки При выполнении сценария cgi какое?то количество переменных среды становится незадействованным. Для просмотра значений большинства переменных используется команда env или set. Давайте создадим ссылку на основе