Russian Qt Forum

Qt => Общие вопросы => Тема начата: spectre71 от Декабрь 01, 2009, 11:45



Название: QDesktopServices
Отправлено: spectre71 от Декабрь 01, 2009, 11:45
Не понятно!
Что должен возвращать под Windows?
QDesktopServices::storageLocation(QDesktopServices::ApplicationsLocation);

Цитировать
QDesktopServices::ApplicationsLocation   3   Returns the user's applications.


Название: Re: QDesktopServices
Отправлено: pastor от Декабрь 01, 2009, 13:00
Открываем qdesktopservices_win.cpp, метод QDesktopServices::storageLocation и внимательно смотрим:

Код
C++ (Qt)
...
QSettings settings(QSettings::UserScope, QLatin1String("Microsoft"), QLatin1String("Windows"));
settings.beginGroup(QLatin1String("CurrentVersion/Explorer/Shell Folders"));
...
case ApplicationsLocation:
       return settings.value(QLatin1String("Programs")).toString();
...

Далее шагаем в реест и смотрим, что содержит Shell Folders. Видим, что Programs это путь
 к C:\Documents and Settings\<user name>\Start Menu\Programs


Название: Re: QDesktopServices
Отправлено: crossly от Декабрь 01, 2009, 13:31
прикольно.... а у тебя какая версия Qt??


Название: Re: QDesktopServices
Отправлено: pastor от Декабрь 01, 2009, 14:00
4.5.3.

В 4.4.х и, разумеется, в 4.6 это тоже есть


Название: Re: QDesktopServices
Отправлено: crossly от Декабрь 01, 2009, 14:34
4.5.3.

В 4.4.х и, разумеется, в 4.6 это тоже есть
понятно что есть.... просто немного в ином виде.... :)
Код:
case ApplicationsLocation:
        if (SHGetSpecialFolderPath(0, path, CSIDL_PROGRAMS, FALSE))
            result = QString::fromWCharArray(path);
        break;


Название: Re: QDesktopServices
Отправлено: spectre71 от Декабрь 01, 2009, 16:08
Открываем qdesktopservices_win.cpp, метод QDesktopServices::storageLocation и внимательно смотрим:

Код
C++ (Qt)
...
QSettings settings(QSettings::UserScope, QLatin1String("Microsoft"), QLatin1String("Windows"));
settings.beginGroup(QLatin1String("CurrentVersion/Explorer/Shell Folders"));
...
case ApplicationsLocation:
       return settings.value(QLatin1String("Programs")).toString();
...

Далее шагаем в реест и смотрим, что содержит Shell Folders. Видим, что Programs это путь
 к C:\Documents and Settings\<user name>\Start Menu\Programs

Ну так я про тоже!
Какаое отношение "Applications Location" имеет к:
C:\Documents and Settings\<user name>\Start Menu\Programs

Дока по QT  иногда  - ужас
Вот если-бы ключ был "StartMenuPrograms" или "MenuPrograms" или "Programs", то было бы понятнее.
А лучше бы в доке нормально описали.



Название: Re: QDesktopServices
Отправлено: pastor от Декабрь 01, 2009, 23:42
понятно что есть.... просто немного в ином виде.... :)

Да, в 4.6 вижу такое. До 4.6 использовался код который я привел выше


Название: Re: QDesktopServices
Отправлено: fuCtor от Март 01, 2010, 08:35
Не буду создавать отдельную тему:

а как тогда получить под Windows "AppData / Roaming"?


Название: Re: QDesktopServices
Отправлено: SABROG от Март 01, 2010, 09:04
QDesktopServices::ApplicationsLocation