Russian Qt Forum

Qt => Вопросы новичков => Тема начата: alex_beginner от Январь 14, 2012, 16:07



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

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

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


Название: Re: QSettings: как удалить полностью?
Отправлено: lit-uriy от Январь 14, 2012, 16:57
вроде этот момент не предусмотрен


Название: Re: QSettings: как удалить полностью?
Отправлено: stima от Январь 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);


Название: Re: QSettings: как удалить полностью?
Отправлено: alex_beginner от Январь 14, 2012, 20:01
А не могли бы пояснить, что такое в данном случае root?
Если я делаю так:
Код:
    QSettings settings(QSettings::NativeFormat,QSettings::UserScope);
    settings.remove("organization");
компилятор ругается - говорит, нет такого прототипа. Есть только
QSettings settings(QSettings::NativeFormat,QSettings::UserScope,"что-нибудь");
Как мне сместиться на ветку выше от organization?


Название: Re: QSettings: как удалить полностью?
Отправлено: popper от Январь 14, 2012, 20:59
Понятно, что я мог бы прибить ветку в реестре, но принципиально не хочу - это ведь может быть и не Windows вовсе, да и не реестр.
Как убить её цивилизованно, не задумываясь о способе хранения?


Раз требуется кросплатформенное решение, то может сразу установить IniFormat? В этом случае задача сводится к удалению настроечного файла после удаления объекта QSettings (созданного динамически).


Название: Re: QSettings: как удалить полностью?
Отправлено: alex_beginner от Январь 14, 2012, 22:47
Может быть.
Просто ненавижу проги, которые после "полной" деинсталляции оставляют за собой куски реестра, темповые каталоги и пр. Умерла - так умерла, убери за собой ВСЁ!


Название: Re: QSettings: как удалить полностью?
Отправлено: kambala от Январь 14, 2012, 23:53
по-моему свои сохранённые настройки как раз программа не должна удалять. вот пользователь удалил программу, а через час или день или год решил снова поставить. как будет приятно увидеть, что она настроена так же, как и в прошлый раз! конечно, можно экспортировать настройки в файл, но ведь далеко не все этим пользуются.


Название: Re: QSettings: как удалить полностью?
Отправлено: alex_beginner от Январь 15, 2012, 02:28
Ну тут можно спросить при удалении - хочешь полностью да/нет?
Ведь тот же пользователь будет матюгать программу, когда запустит какой-нибудь RegCleaner и увидит гору оставшегося мусора.


Название: Re: QSettings: как удалить полностью?
Отправлено: lit-uriy от Январь 15, 2012, 14:54
alex_beginner, обычно такие вещи делаются установщиками (installers), которые при удалении ПО чистят систему.


Название: Re: QSettings: как удалить полностью?
Отправлено: Bepec от Январь 15, 2012, 17:15
Он собственно и задаёт вопрос, как сделать этот установщик ^^
Точнее как реализовать эту функции на Qt...