Russian Qt Forum
Мая 23, 2025, 00:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не работает QSetting в Windows XP  (Прочитано 5417 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« : Января 18, 2010, 14:19 »

Написал кусок кода сохранения настроек под Linux
Цитировать
//line это QLineEdit
void ProgAVR::writeSettings()
{
   QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName());
   settings.setValue("proshivka", line->text());
}

void ProgAVR::readSettings()
{
   QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName());
   line->setText(settings.value("proshivka").toString());
}
Всё работает. Собираю прогу под Windos - не работает. В линуксе при выходе запоминается текст строки line и при старте заполняется. В винде при запуске проги line всегда пустой. Почему? Может под виндой нужно ещё где-нибудь что-нибудь указать?
Записан
Marat(Qt)
Гость
« Ответ #1 : Января 18, 2010, 14:58 »

Возможно дело в имени организации и программы, а в целом вроде нормально все
Записан
foxexe
Гость
« Ответ #2 : Января 18, 2010, 15:07 »

в Windows помоему должно сохранятся в реестре, в не проверяли реестр? там есть ваши данные?
Записан
nixman05
Гость
« Ответ #3 : Января 18, 2010, 18:08 »

Я бы рекомендовал создавать QSettings файл следующим образом:

Код
C++ (Qt)
QSettings setting(QSettings::IniFormat,QSettings::UserScope,
                  QCoreApplication::organizationName(),QCoreApplication::applicationName());
 

В данном случае будет создан ini-файл в пользовательской директории, как в Windows, так и в Linux (в других ос также).

А в реестр писать нежелательно, он и так обычно сильно засоренный.
Записан
foxexe
Гость
« Ответ #4 : Января 18, 2010, 18:22 »

В данном случае будет создан ini-файл в пользовательской директории, как в Windows, так и в Linux (в других ос также).

Моя книга Шлее  видно устарела и слава богу, у меня там написано что в виндоус сохранится в реестре, а с других ос
$QTDIR/.etc или $HOME/.qt, я вообще офигел от такого хода дел и предал анафеме QSettings до сегодня
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #5 : Января 19, 2010, 07:44 »

2nixman05 спасибо, буду пробовать.

ps То, что Qt пишет в реестр и кому-то это не нравится это другой вопрос. Но если я хочу писать в реестр или мне по барабану куда сетенги пишутся - почему даже в реестр не записываются сетенги? Может касперский не позволяет реестр трогать?  Непонимающий
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Января 19, 2010, 08:30 »

по умолчанию запись осуществляется в пользовательский раздел реестра. Кашмарский не должен мешать, а если мешает, то наверно вякать должен.
Записан

Юра.
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #7 : Января 19, 2010, 22:33 »

Каспер может и не вякать - работать по заранее установленным правилам. Впрочем, запрет записи в HKEY_CURRENT_USER не является для него типичным. Ну ведь конце-концов Каспера и приглушить можно на время для проверки.
А в таком варианте оно работает?
Код:
QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("mysoft.com");
QCoreApplication::setApplicationName("Star Runner");
...
void ProgAVR::writeSettings()
{
   QSettings settings;
   settings.setValue("proshivka", line->text());
}

void ProgAVR::readSettings()
{
   QSettings settings;
   line->setText(settings.value("proshivka").toString());
}
У меня под виндой с QSettings и реестром нет проблем никаких. Может у тебя organizationName и т.п. какие-нибудь "неправильные" (содержат символы антивиндовые)?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 2.614 секунд. Запросов: 23.