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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSettings: как удалить полностью?  (Прочитано 6298 раз)
alex_beginner
Гость
« : Январь 14, 2012, 16:07 »

Пытаюсь стереть запомненные значения приложения вот так:
Код:
void MainWindow::ClearSettings()
{
    QSettings settings(organization,application); //organization и application описаны выше константами
    settings.clear();
}

Это Windows, запоминание стандартное (в реестре).
Всё стирается, а головная ветка HKCU\Software\organization остаётся.

Как удалить её? Понятно, что я мог бы прибить ветку в реестре, но принципиально не хочу - это ведь может быть и не Windows вовсе, да и не реестр.
Как убить её цивилизованно, не задумываясь о способе хранения?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Январь 14, 2012, 16:57 »

вроде этот момент не предусмотрен
Записан

Юра.
stima
Гость
« Ответ #2 : Январь 14, 2012, 17:45 »

Код:
QSettings::QSettings ( Format format, Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 );

Чтобы удалить organization подымитесь на "ветку" выше и :

Код:
QSettings s(root, QSettings::NativeFormat);
s.remove(organization);
Записан
alex_beginner
Гость
« Ответ #3 : Январь 14, 2012, 20:01 »

А не могли бы пояснить, что такое в данном случае root?
Если я делаю так:
Код:
    QSettings settings(QSettings::NativeFormat,QSettings::UserScope);
    settings.remove("organization");
компилятор ругается - говорит, нет такого прототипа. Есть только
QSettings settings(QSettings::NativeFormat,QSettings::UserScope,"что-нибудь");
Как мне сместиться на ветку выше от organization?
Записан
popper
Гость
« Ответ #4 : Январь 14, 2012, 20:59 »

Понятно, что я мог бы прибить ветку в реестре, но принципиально не хочу - это ведь может быть и не Windows вовсе, да и не реестр.
Как убить её цивилизованно, не задумываясь о способе хранения?


Раз требуется кросплатформенное решение, то может сразу установить IniFormat? В этом случае задача сводится к удалению настроечного файла после удаления объекта QSettings (созданного динамически).
Записан
alex_beginner
Гость
« Ответ #5 : Январь 14, 2012, 22:47 »

Может быть.
Просто ненавижу проги, которые после "полной" деинсталляции оставляют за собой куски реестра, темповые каталоги и пр. Умерла - так умерла, убери за собой ВСЁ!
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #6 : Январь 14, 2012, 23:53 »

по-моему свои сохранённые настройки как раз программа не должна удалять. вот пользователь удалил программу, а через час или день или год решил снова поставить. как будет приятно увидеть, что она настроена так же, как и в прошлый раз! конечно, можно экспортировать настройки в файл, но ведь далеко не все этим пользуются.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
alex_beginner
Гость
« Ответ #7 : Январь 15, 2012, 02:28 »

Ну тут можно спросить при удалении - хочешь полностью да/нет?
Ведь тот же пользователь будет матюгать программу, когда запустит какой-нибудь RegCleaner и увидит гору оставшегося мусора.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Январь 15, 2012, 14:54 »

alex_beginner, обычно такие вещи делаются установщиками (installers), которые при удалении ПО чистят систему.
Записан

Юра.
Bepec
Гость
« Ответ #9 : Январь 15, 2012, 17:15 »

Он собственно и задаёт вопрос, как сделать этот установщик ^^
Точнее как реализовать эту функции на Qt...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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