Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2014, 15:50   #1
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию Сохранение настроек

Ни как не пойму, почему у меня не сохраняется значение переменных, после выхода из проограммы. Все делал по книге Макса Шлее, Write_Settings пишу в деструкторе, а Read_Settings в конструкторе, в чем проблема нe знаю!!!
Добавил m_settings("Cube", "Words") в конструкторе и
QCoreApplication::setOrganizationNa me("Cube");
QCoreApplication::setApplicationNam e("Words");
в main.cpp ничего не помогает!!!
Вот код:
Код:
void Write_Settings() {
        qDebug() << "Write_Settings()";
        m_settings.beginGroup("/SettingsRoute");
        m_settings.setValue("/easy",   easy_var);
        m_settings.setValue("/middle", middle_var);
        m_settings.setValue("/hard",   hard_var);
        m_settings.endGroup();
    }
    void Read_Settings() {
        qDebug() << "Read_Settings()";
        m_settings.beginGroup("/SettingsRoute");
        easy_var   = m_settings.value("/easy",   0).toInt();
        middle_var = m_settings.value("/middle", 0).toInt();
        hard_var   = m_settings.value("/hard",   0).toInt();
        m_settings.endGroup();
    }
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 10.10.2014, 19:13   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Попробуйте вот так:
Код:
void Dialog::SaveSettings()
{
    //Save

    QSettings setting("MyCompany","myapp");
    setting.beginGroup("MainWindow");
    setting.setValue("position",this->geometry());
    setting.endGroup();

    qDebug() << "Saved";
}

void Dialog::LoadSettings()
{
    //Load

    QSettings setting("MyCompany","myapp");
    setting.beginGroup("MainWindow");
    QRect myrect  = setting.value("position").toRect();
    setGeometry(myrect);
    setting.endGroup();

    qDebug() << "Loaded";
}
8Observer8 вне форума Ответить с цитированием
Старый 10.10.2014, 23:39   #3
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Нет, не помогло, если что у меня Qt Creator 3.0.1 based on Qt 5.2.1.
Помогите пожалуйста, срочно!!!
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 11.10.2014, 07:49   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Строки то в QDebug выводятся?
Кстати, не знал что есть готовый QSettings.... Он под андройдом работает? - а-то я писал свой велосипед - http://pro-prof.com/archives/1546 (сохраняет настройки всегда в базе SQLIte).

Последний раз редактировалось rrrFer; 11.10.2014 в 07:53.
rrrFer вне форума Ответить с цитированием
Старый 11.10.2014, 09:03   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

ser70, запустите проект, который я прикрепил. Там будет две кнопки "Save" и "Load". Перетащите окно куда-нибудь. Нажмите кнопку "Save". Перезапустите приложение. Нажмите кнопку "Load". Окно переместится в сохранённую на предыдущем этапе позицию

Проект на Qt 5.3.2

P.S. Я вот отсюда это узнал: C++ Qt 92 - QSettings
Вложения
Тип файла: zip Settings.zip (2.1 Кб, 7 просмотров)

Последний раз редактировалось 8Observer8; 11.10.2014 в 09:06.
8Observer8 вне форума Ответить с цитированием
Старый 11.10.2014, 09:44   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Ну а я погуглил, и проблемы с андройдом нагуглил. Вроде как настройки он пытается там в ini файле хранить, но что будет с ини файлом при обновлении приложения или... если файл разместить на sd-карте - то удалится ли он сам при удалении.

Для доступа к SD приложению нужно больше привилегий. А еще, путь надо хардкодить и... на телефоне может вдеь вообще не оказаться sd-карты (ну тока кнутреняя память).

С sd-карты юзер может случайно удалить этот файл.

Ну а самое главное, выйдет новая версия Qt и внезапно может обновиться QSettings - будет оно например вместо ini файлв джэйсон использовать. Это значит что настройки у вашего приложения после обновления накроются. КОроче что-то важное там хранить точно низя. Нуц а с учетом того, что QSettings под разными платформами выбирает более адекватный вариант (под виндой хранит в реестре например), но ИМХО весьма вероятно, что под андройдом он таки будет в БД хранить, т.е. настройки таки сбросятся однажды

Взвесил все за и против стандартного класса и своего велосипеда и решил, что велосипед мне нравится больше (ссылка выше).
rrrFer вне форума Ответить с цитированием
Старый 11.10.2014, 14:21   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Можно ещё данные в XML и Json файлах хранить. СУБД SQLite - наилучший выбор! И идёт вместе с Qt. Не нужно ничего дополнительно ставить

Последний раз редактировалось 8Observer8; 11.10.2014 в 14:31.
8Observer8 вне форума Ответить с цитированием
Старый 11.10.2014, 16:08   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Можно ещё данные в XML и Json файлах хранить. СУБД SQLite - наилучший выбор! И идёт вместе с Qt. Не нужно ничего дополнительно ставить
Ну я SQLite и использовал. Хотя...не всегда это прям лучший выбор. Он тянет кучу зависимостей и размер файла сильно растет. Для всяких андройдов это ИМХО критично.... Т.е. думать надо в каждом конкретном случае....

А "ставить не надо" - это самый слабый аргумент ИМХО для разработчика и это будет потом плохим оправданием если что ))
rrrFer вне форума Ответить с цитированием
Старый 11.10.2014, 17:17   #9
ser70
Форумчанин
 
Аватар для ser70
 
Регистрация: 02.10.2009
Сообщений: 255
По умолчанию

Строки в qDebug выводятся, но все равно не сохраняется.
"Реальность воображаема, а воображаемое - реально" В. Соло
ser70 вне форума Ответить с цитированием
Старый 11.10.2014, 17:31   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от ser70 Посмотреть сообщение
Строки в qDebug выводятся, но все равно не сохраняется.
У моего прикреплённого проекта выше 0 просмотров. Скачайте и попробуйте, как я там написал
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение/выбор настроек zao Microsoft Office Excel 1 25.05.2011 16:26
сохранение настроек в файл C# darkahoy Общие вопросы C/C++ 0 02.12.2009 18:29
Сохранение настроек - ? Evgenii Общие вопросы Delphi 3 03.07.2009 14:43
Сохранение настроек blackstersl Общие вопросы Delphi 3 21.12.2008 12:37