Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке? Тип приложения - не 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);