crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> не сохраняются настройки приложения, QSettings
void*
  опции профиля:
сообщение 21.7.2008, 19:31
Сообщение #1


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


собственно сабж. раньше как-то пробовал использовать QSettings, все нормально работало, а вот сейчас почему-то не работает. В классе главного окна объявлено:
private:
           QSettings settings;

Затем в конструкторе инициализируется:
MainWindow::MainWindow() : ..., settings(QSettings::NativeFormat, QSettings::UserScope, QString("ProgStudio"), progname) { //progname - это QString с названием программы
//...
}

Также есть две функции:
void MainWindow::writeSettings() {
     settings.beginGroup("/MainWindow");
     settings.setValue("/pos", this->pos());
     settings.setValue("/size", this->size());
     settings.setValue("/splitter", splitter->saveState());
     //...
     settings.endGroup();
     //...
}
void MainWindow::readSettings() {
     settings.beginGroup("/MainWindow");

     QPoint point = settings.value("/pos", QPoint(0, 0)).toPoint();
     if((point.x() > 0 && point.x() < 1024) && (point.y() > 0 && point.y() < 768)) move(point);

     QSize size = settings.value("/size", QSize(800, 550)).toSize();
     if((size.width() > 0 && size.width() < 1024) && (size.height() > 0 && size.height() < 768)) resize(size);

     splitter->restoreState(settings.value("/splitter").toByteArray());
     //...
     settings.endGroup();
     //...
}

readSettings() используется в конструкторе, а writeSettings() в деструкторе:
MainWindow::~MainWindow() {
                          writeSettings();
}

но все это почему-то не работает :( все время используются значения по умолчанию...
подскажите пожалуйста в чем проблема
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.7.2008, 19:57
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


а ось которая? что для нее естественный формат?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 21.7.2008, 20:26
Сообщение #3


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


и в никсах и в винде одинаково не работает :(
для никсов QSettings::NativeFormat - INI-файлы, для винды - реестр
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.7.2008, 20:35
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


так, а в файл/реестр что-нибудь пишется при сохранении настроек?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 23.7.2008, 13:11
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


лично я выше описанное делаю "ручками" так оно надёжнее :rolleyes:
Без всяких там реестров.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 23.7.2008, 13:27
Сообщение #6


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


кстати забыл сказать, проблема решена перенесением вызова функции writeSettings() из деструктора в обработчик closeEvent()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 23.7.2008, 17:27
Сообщение #7


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


у меня проблема была на 434. сеттингс плохо работает с ковычками..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 23.7.2008, 18:00
Сообщение #8


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


trdm, а поконкретнее? может быть ты их не экранировал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 24.7.2008, 10:51
Сообщение #9


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


/// Сохраяняем текущую строку базы данных
void uoStartupDlgImpl::curentDBSettingSave()
{
    QTreeWidgetItem* curItem = treeWidget->currentItem();
    if (curItem == NULL || curItem == dbAdmin || curItem == dbUser)
        return;
    QString curDbName = curItem->text(0);
    QString curDbPath = curItem->text(1);

    _settinds->setValue(iniParam_CurentDBName,curDbName);
    _settinds->setValue(iniParam_CurentDBPath,curDbPath);
}

если в curDbName были ковычки, значение не сохранялось.

Сообщение отредактировал trdm - 24.7.2008, 10:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.4.2024, 1:06