Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: juvf от Января 18, 2010, 14:19



Название: Не работает QSetting в Windows XP
Отправлено: juvf от Января 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 всегда пустой. Почему? Может под виндой нужно ещё где-нибудь что-нибудь указать?


Название: Re: Не работает QSetting в Windows XP
Отправлено: Marat(Qt) от Января 18, 2010, 14:58
Возможно дело в имени организации и программы, а в целом вроде нормально все


Название: Re: Не работает QSetting в Windows XP
Отправлено: foxexe от Января 18, 2010, 15:07
в Windows помоему должно сохранятся в реестре, в не проверяли реестр? там есть ваши данные?


Название: Re: Не работает QSetting в Windows XP
Отправлено: nixman05 от Января 18, 2010, 18:08
Я бы рекомендовал создавать QSettings файл следующим образом:

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

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

А в реестр писать нежелательно, он и так обычно сильно засоренный.


Название: Re: Не работает QSetting в Windows XP
Отправлено: foxexe от Января 18, 2010, 18:22
В данном случае будет создан ini-файл в пользовательской директории, как в Windows, так и в Linux (в других ос также).

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


Название: Re: Не работает QSetting в Windows XP
Отправлено: juvf от Января 19, 2010, 07:44
2nixman05 спасибо, буду пробовать.

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


Название: Re: Не работает QSetting в Windows XP
Отправлено: lit-uriy от Января 19, 2010, 08:30
по умолчанию запись осуществляется в пользовательский раздел реестра. Кашмарский не должен мешать, а если мешает, то наверно вякать должен.


Название: Re: Не работает QSetting в Windows XP
Отправлено: xokc от Января 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 и т.п. какие-нибудь "неправильные" (содержат символы антивиндовые)?