QT 4: программирование GUI на С++ | страница 61
или используя 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 приложения Электронная таблица. В следующих разделах мы рассмотрим возможность модификации приложения Электронная таблица для обеспечения работы со многими документами и реализации экранных заставок. Мы завершим реализацию этих функций, в том числе обеспечивающих обработку формул и сортировку, в следующей главе.