|
Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не Qt, Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.
|
Лекция 15: Разработка приложений с графическим интерфейсом
15.7 Сохранение настроек
Для сохранения настроек в программе мы воспользуемся классом QSettings. Он позволяет сохранять настройки программы стандартным для программной платформы способом. В ОС Linux и Mac OS X это конфигурационные файлы (.ini и. .plist), а под управлением ОС Windows настройки программы можно сохранять в системный реестр. Также класс QSettings часто используют для редактирования произвольных. .ini и .plist файлов и ключей системного реестра Windows.
Чтобы добавить поддержку сохранения настроек в программе объявим несколько дополнительных методов.
private slots : void slotPreferencesAccepted ( ); private : void readsettings ( ); void writesettings ( ); void applysettings ( );
Метод readSettings будет читать настройки программы и инициализировать настройками наш диалог. Метод writeSettings будет читать настройки, установленные в диалоге, и записывать их. Наконец метод applySettings будет получать текущие настройки от диалога и настраивать соответствующим образом программу.
void MainWindow::read settings ( )
{
//Указываем, где хранились настройки. QSettings::NativeFormat — в формате определенном
системой
//QSettings::UserScope — настройки для каждого пользователя отдельно.
//Также устанавливаем имя организации и название программы
Qsettings lsettings ( Qsettings::NativeFormat, Qsettings::UserScope, " ", qApp
->ApplicationName ( ) );
//Открываем группу настроек
lsettings.beg inGroup (SETTINGS_GROUP_VIEW);
//Читаем настройки
bool lShowToolBar= lsettings.value (SETTING_SHOW_TOOLBAR, true ).toBool ( );
msettingsDialog->setShowToolBar ( lShowToolBar );
bool lShowStatusBar = lsettings.value (SETTING_SHOW_STATUS_BAR, true ).toBool
( );
msettingsDialog->s etShowStatusBar ( lShowStatusBar );
}
void MainWindow::write settings ( )
{
//Указываем как сохранять настройки. QSettings::NativeFormat — в формате определенном
системой
//QSettings::UserScope — настройки для каждого пользователя отдельно.
//Также устанавливаем имя организации и название программы.
Qsettings lSettings ( Qsettings::Nat iveFormat, Qset t i n gs::UserScope, " ", qApp
->ApplicationName ( ) );
//Открываем группу настроек
lSettings.beg inGroup (SETTINGS_GROUP_VIEW);
//Записываем настройки
lSettings.setvalue (SETTING_SHOW_TOOLBAR, msettingsDialog->isShowToolBar ( ) );
lSettings.setvalue (SETTING_SHOW_STATUS_BAR, mSettingsDialog ->
isShowStatusBar ( ) );
}
void MainWindow::applysettings ( )
{
//Читаем настройки установленые в диалоге и применяем их
ui->mainToolBar->setVisible ( msettingsDialog ->isShowToolBar ( ) );
ui->statusBar->setVisible ( msettingsDialog ->isShowStatusBar ( ) );
}Модифицируем также метод showPreferencesDialog, чтобы он вызывал считывание настроек. Также добавим реализацию метода slotPreferencesAccepted.
void MainWindow::showPreferencesDialog ( )
{
readSettings ( ); //Считываем настройки и устанавливаем их для диалога
mSettingsDialog->show ( ); //Показываем диалог настроек
}
void MainWindow::slotPreferencesAccepted ( )
{
writeSettings ( ); //Записать новые настройки
applySettings ( ); //Применить настройки
}В конструкторе главного окна соединим сигнал accepted от диалога к слоту slotPreferencesAccepted: connect(mSettingsDialog, SIGNAL(accepted()), this, SLOT (slotPreferencesAccepted()), Qt::UniqueConnection);