Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-38483

QStandardPaths does not contain %AppData%\Roaming path which is used by QSettings ini file format

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P3: Somewhat important
    • 5.4.0
    • 5.2.1
    • Core: Other
    • None
    • f3bc9f5c5cee9dac8a7815c2861a9945b5341390 (29.4.2014, dev, 5.4)

    Description

      I wanted to save some custom files in same default dir where user-scope QSettings::IniFormat settings should be saved (in Windows Vista 32bit).

      When using QSettings like this:

      QSettings settings(QSettings::IniFormat, QSettings::UserScope, a.organizationName(), a.applicationName());
      

      settings file is saved in this path:

      C:/Users/Vincas/AppData/Roaming/MyOrganization/MyApplication.ini

      Meanwhile QStandardPaths::writableLocation() and QStandardPaths::standardLocations() does not return any AppData/Roaming paths.

      Here'e the test case:

      #include <QCoreApplication>
      #include <QSettings>
      #include <QStandardPaths>
      #include <QDebug>
      
      int main(int argc, char *argv[])
      {
      	QCoreApplication a(argc, argv);
      
      	a.setOrganizationName("MyOrganization");
      	a.setApplicationName("MyApplication");
      
      	qDebug() << "standardLocations() DesktopLocation" << QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);
      	qDebug() << "standardLocations() DocumentsLocation" << QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);
      	qDebug() << "standardLocations() FontsLocation" << QStandardPaths::standardLocations(QStandardPaths::FontsLocation);
      	qDebug() << "standardLocations() ApplicationsLocation" << QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
      	qDebug() << "standardLocations() MusicLocation" << QStandardPaths::standardLocations(QStandardPaths::MusicLocation);
      	qDebug() << "standardLocations() MoviesLocation" << QStandardPaths::standardLocations(QStandardPaths::MoviesLocation);
      	qDebug() << "standardLocations() PicturesLocation" << QStandardPaths::standardLocations(QStandardPaths::PicturesLocation);
      	qDebug() << "standardLocations() TempLocation" << QStandardPaths::standardLocations(QStandardPaths::TempLocation);
      	qDebug() << "standardLocations() HomeLocation" << QStandardPaths::standardLocations(QStandardPaths::HomeLocation);
      	qDebug() << "standardLocations() DataLocation" << QStandardPaths::standardLocations(QStandardPaths::DataLocation);
      	qDebug() << "standardLocations() CacheLocation" << QStandardPaths::standardLocations(QStandardPaths::CacheLocation);
      	qDebug() << "standardLocations() GenericCacheLocation" << QStandardPaths::standardLocations(QStandardPaths::GenericCacheLocation);
      	qDebug() << "standardLocations() GenericDataLocation" << QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
      	qDebug() << "standardLocations() RuntimeLocation" << QStandardPaths::standardLocations(QStandardPaths::RuntimeLocation);
      	qDebug() << "standardLocations() ConfigLocation" << QStandardPaths::standardLocations(QStandardPaths::ConfigLocation);
      	qDebug() << "standardLocations() GenericConfigLocation" << QStandardPaths::standardLocations(QStandardPaths::GenericConfigLocation);
      	qDebug() << "standardLocations() DownloadLocation" << QStandardPaths::standardLocations(QStandardPaths::DownloadLocation);
      
      	qDebug() << "writableLocation() DesktopLocation" << QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
      	qDebug() << "writableLocation() DocumentsLocation" << QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
      	qDebug() << "writableLocation() FontsLocation" << QStandardPaths::writableLocation(QStandardPaths::FontsLocation);
      	qDebug() << "writableLocation() ApplicationsLocation" << QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation);
      	qDebug() << "writableLocation() MusicLocation" << QStandardPaths::writableLocation(QStandardPaths::MusicLocation);
      	qDebug() << "writableLocation() MoviesLocation" << QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
      	qDebug() << "writableLocation() PicturesLocation" << QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
      	qDebug() << "writableLocation() TempLocation" << QStandardPaths::writableLocation(QStandardPaths::TempLocation);
      	qDebug() << "writableLocation() HomeLocation" << QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
      	qDebug() << "writableLocation() DataLocation" << QStandardPaths::writableLocation(QStandardPaths::DataLocation);
      	qDebug() << "writableLocation() CacheLocation" << QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
      	qDebug() << "writableLocation() GenericCacheLocation" << QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation);
      	qDebug() << "writableLocation() GenericDataLocation" << QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
      	qDebug() << "writableLocation() RuntimeLocation" << QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation);
      	qDebug() << "writableLocation() ConfigLocation" << QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
      	qDebug() << "writableLocation() GenericConfigLocation" << QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
      	qDebug() << "writableLocation() DownloadLocation" << QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
      
      	QSettings settings(QSettings::IniFormat, QSettings::UserScope, a.organizationName(), a.applicationName());
      
      	qDebug() << "settings file name: " << settings.fileName();
      	return a.exec();
      }
      

      Output:

      standardLocations() DesktopLocation ("C:/Users/Vincas/Desktop")
      standardLocations() DocumentsLocation ("C:/Users/Vincas/Documents")
      standardLocations() FontsLocation ("C:/Windows/Fonts")
      standardLocations() ApplicationsLocation ("C:/Users/Vincas/AppData/Roaming/Microsoft/Windows/Start Menu/Programs")
      standardLocations() MusicLocation ("C:/Users/Vincas/Music")
      standardLocations() MoviesLocation ("C:/Users/Vincas/Videos")
      standardLocations() PicturesLocation ("C:/Users/Vincas/Pictures")
      standardLocations() TempLocation ("C:/Users/Vincas/AppData/Local/Temp")
      standardLocations() HomeLocation ("C:/Users/Vincas")
      standardLocations() DataLocation ("C:/Users/Vincas/AppData/Local/MyOrganization/MyApplication", "C:/ProgramData/MyOrganization/MyApplication")
      standardLocations() CacheLocation ("C:/Users/Vincas/AppData/Local/MyOrganization/MyApplication/cache")
      standardLocations() GenericCacheLocation ("C:/Users/Vincas/AppData/Local/cache")
      standardLocations() GenericDataLocation ("C:/Users/Vincas/AppData/Local", "C:/ProgramData")
      standardLocations() RuntimeLocation ("C:/Users/Vincas")
      standardLocations() ConfigLocation ("C:/Users/Vincas/AppData/Local/MyOrganization/MyApplication", "C:/ProgramData/MyOrganization/MyApplication")
      standardLocations() GenericConfigLocation ("C:/Users/Vincas/AppData/Local", "C:/ProgramData")
      standardLocations() DownloadLocation ("C:/Users/Vincas/Documents")
      writableLocation() DesktopLocation "C:/Users/Vincas/Desktop"
      writableLocation() DocumentsLocation "C:/Users/Vincas/Documents"
      writableLocation() FontsLocation "C:/Windows/Fonts"
      writableLocation() ApplicationsLocation "C:/Users/Vincas/AppData/Roaming/Microsoft/Windows/Start Menu/Programs"
      writableLocation() MusicLocation "C:/Users/Vincas/Music"
      writableLocation() MoviesLocation "C:/Users/Vincas/Videos"
      writableLocation() PicturesLocation "C:/Users/Vincas/Pictures"
      writableLocation() TempLocation "C:/Users/Vincas/AppData/Local/Temp"
      writableLocation() HomeLocation "C:/Users/Vincas"
      writableLocation() DataLocation "C:/Users/Vincas/AppData/Local/MyOrganization/MyApplication"
      writableLocation() CacheLocation "C:/Users/Vincas/AppData/Local/MyOrganization/MyApplication/cache"
      writableLocation() GenericCacheLocation "C:/Users/Vincas/AppData/Local/cache"
      writableLocation() GenericDataLocation "C:/Users/Vincas/AppData/Local"
      writableLocation() RuntimeLocation "C:/Users/Vincas"
      writableLocation() ConfigLocation "C:/Users/Vincas/AppData/Local/MyOrganization/MyApplication"
      writableLocation() GenericConfigLocation "C:/Users/Vincas/AppData/Local"
      writableLocation() DownloadLocation "C:/Users/Vincas/Documents"
      settings file name: "C:/Users/Vincas/AppData/Roaming/MyOrganization/MyApplication.ini"

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              kleint Friedemann Kleint
              talkless Vincas Dargis
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes