Russian Qt Forum

Qt => Общие вопросы => Тема начата: kadr от Январь 21, 2010, 14:05



Название: QSettings
Отправлено: kadr от Январь 21, 2010, 14:05
Привет всем, тут возникла необходимость хранить кое какие данные в реестре, для этого я решил использовать QSettings, почитал в справке, там написано, что все просто, достаточно лиши написать так:
QSettings setting;
setting.setValue("key",value);
я так и делаю, но почему то ничего не сохраняется, в чем проблема:
Код:
 QSettings setting;

        bool ok;
        int num_apt;
        num_apt = QInputDialog::getInt(this,tr("Введите номер аптеки"),tr("Номер:"),1,1,999,1,&ok);
        setting.setValue("id_aptiki",num_apt);


        qDebug() << setting.value("id_aptiki","0").toString();

        ui->lab_id_aptiki->setText("Номер аптеки: "+setting.value("id_aptiki","0").toString());
        ui->statusBar->insertWidget(6,ui->lab_id_aptiki);
qDebug() << выводит значение по умолчанию 0;


Название: Re: QSettings
Отправлено: niXman от Январь 21, 2010, 14:40
а в файле значение есть?


Название: Re: QSettings
Отправлено: kadr от Январь 21, 2010, 14:54
а в файле значение есть?
В каком файле, я вроде не использую файлы!


Название: Re: QSettings
Отправлено: p166 от Январь 21, 2010, 14:58
Почти правильно, только сделай инициализацию QSettings в таком виде:
    QSettings settings("%company_name%", "%prog_name%");


Название: Re: QSettings
Отправлено: MoPDoBoPoT от Январь 21, 2010, 15:02
По-моему это из-за того, что не было указано имя организации и приложения.
Цитата: QtAssistant
If QCoreApplication::setOrganizationName() and QCoreApplication::setApplicationName() has not been previously called, the QSettings object will not be able to read or write any settings, and status() will return AccessError.
Обычно в main.cpp вызывают два метода QCoreApplication::setOrganizationName() и QCoreApplication::setApplicationName(), но можно эти параметры передать и в конструктор:
Код
C++ (Qt)
QSettings settings("OrganizationName", "ApplicationName");
 


Название: Re: QSettings
Отправлено: kadr от Январь 21, 2010, 15:05
Почти правильно, только сделай инициализацию QSettings в таком виде:
    QSettings settings("%company_name%", "%prog_name%");

О спасибо, теперь работает!