Qtでプラットフォームごとのユーザーフォルダを取得する

さほど難しいことではないので必要なときに調べれば良いのだけど、プラットフォームごとにいちいち調べるのは面倒なのでまとめてみました。

Windowsでいうところのマイドキュメントや、Unix系のユーザーフォームのフォルダは環境やバージョンによって変わってしまいます。
このフォルダをハードコードするわけにも行きませんのでQtの力を使います。
というか、Qtがいい感じにしてくれます。

フォルダを取得するには「QStandardPaths」を使用します。
取得できる情報は列挙型「QStandardPaths::StandardLocation」で定義されています。Qt 5.1.xの時点で16種類あります。
例えば
StandardPaths::DesktopLocation 0
QStandardPaths::DocumentsLocation 1
QStandardPaths::FontsLocation 2
の、ような感じですがそれぞれの説明あらかじめ日本語で書くよりも具体的なパスを見たほうがピンとくると思いますのでプラットフォームごとにまとめます。

まとめの前に、使用するメソッドをいくつか消化します。
QStandardPaths::displayName
 プラットフォームごとのフォルダの名称(呼び名)が取得できます。
QStandardPaths::standardLocations
 いい感じにしてくれた結果のフォルダがQStringListで取得できます。リストの先頭から優先度の高いものが入っています。
 空の時はそのシステムには存在しない種類のフォルダになります。
QStandardPaths::writableLocation
 いい感じにしてくれた結果のフォルダが1つ取得できます。大抵は何かを書き込むために必要になったりすると思うのでこちらで十分かもしれません。

注意としては、取得したフォルダにアプリケーション名が含まれるため取得した時点でフォルダが存在しているとは限らないことです。
実際に使用する前にフォルダの存在を確認してなければ作成してください。

まとめは下のような構成で記載します。
No Enum定義名
 displayName()の結果
 writableLocation()の結果
 (standardLocations()の結果)カッコで囲われて複数あるときはカンマ区切りです。


/// Windows 8.1の場合 ///
0 QStandardPaths::DesktopLocation
 Desktop
 C:/Users/USER_NAME/Desktop
 (C:/Users/USER_NAME/Desktop)
1 QStandardPaths::DocumentsLocation
 Documents
 C:/Users/USER_NAME/Documents
 (C:/Users/USER_NAME/Documents)
2 QStandardPaths::FontsLocation
 Fonts
 C:/WINDOWS/Fonts
 (C:/WINDOWS/Fonts)
3 QStandardPaths::ApplicationsLocation
 Applications
 C:/Users/USER_NAME/AppData/Roaming/Microsoft/Windows/Start Menu/Programs
 (C:/Users/USER_NAME/AppData/Roaming/Microsoft/Windows/Start Menu/Programs)
4 QStandardPaths::MusicLocation
 Music
 C:/Users/USER_NAME/Music
 (C:/Users/USER_NAME/Music)
5 QStandardPaths::MoviesLocation
 Movies
 C:/Users/USER_NAME/Videos
 (C:/Users/USER_NAME/Videos)
6 QStandardPaths::PicturesLocation
 Pictures
 C:/Users/USER_NAME/Pictures
 (C:/Users/USER_NAME/Pictures)
7 QStandardPaths::TempLocation
 Temporary Directory
 C:/Users/USER_NAME/AppData/Local/Temp
 (C:/Users/USER_NAME/AppData/Local/Temp)
8 QStandardPaths::HomeLocation
 Home
 C:/Users/USER_NAME
 (C:/Users/USER_NAME)
9 QStandardPaths::DataLocation
 Application Data
 C:/Users/USER_NAME/AppData/Local/APP_NAME
 (C:/Users/USER_NAME/AppData/Local/APP_NAME, C:/ProgramData/APP_NAME)
10 QStandardPaths::CacheLocation
 Cache
 C:/Users/USER_NAME/AppData/Local/APP_NAME/cache
 (C:/Users/USER_NAME/AppData/Local/APP_NAME/cache)
11 QStandardPaths::GenericDataLocation
 Shared Data
 C:/Users/USER_NAME/AppData/Local
 (C:/Users/USER_NAME/AppData/Local, C:/ProgramData)
12 QStandardPaths::RuntimeLocation
 Runtime C:/Users/USER_NAME
 (C:/Users/USER_NAME)
13 QStandardPaths::ConfigLocation
 Configuration
 C:/Users/USER_NAME/AppData/Local/APP_NAME
 (C:/Users/USER_NAME/AppData/Local/APP_NAME, C:/ProgramData/APP_NAME)
14 QStandardPaths::DownloadLocation
 Download
 C:/Users/USER_NAME/Documents
 (C:/Users/USER_NAME/Documents)
15 QStandardPaths::GenericCacheLocation
 Shared Cache
 C:/Users/Iori/AppData/Local/cache
 (C:/Users/Iori/AppData/Local/cache)


/// Ubuntu 12.10の場合 ///
0 QStandardPaths::DesktopLocation
 Desktop
 /home/USER_NAME/デスクトップ
 (/home/USER_NAME/デスクトップ)
1 QStandardPaths::DocumentsLocation
 Documents
 /home/USER_NAME/ドキュメント
 (/home/USER_NAME/ドキュメント)
2 QStandardPaths::FontsLocation
 Fonts
 /home/USER_NAME/.fonts
 (/home/USER_NAME/.fonts)
3 QStandardPaths::ApplicationsLocation
 Applications
 /home/USER_NAME/.local/share/applications
 (/home/USER_NAME/.local/share/applications, /usr/share/ubuntu/applications, /usr/share/gnome/applications, /usr/local/share//applications, /usr/share//applications)
4 QStandardPaths::MusicLocation
 Music
 /home/USER_NAME/ミュージック
 (/home/USER_NAME/ミュージック)
5 QStandardPaths::MoviesLocation
 Movies
 /home/USER_NAME/ビデオ
 (/home/USER_NAME/ビデオ)
6 QStandardPaths::PicturesLocation
 Pictures
 /home/USER_NAME/ピクチャ
 (/home/USER_NAME/ピクチャ)
7 QStandardPaths::TempLocation
 Temporary Directory
 /tmp
 (/tmp)
8 QStandardPaths::HomeLocation
 Home
 /home/USER_NAME
 (/home/USER_NAME)
9 QStandardPaths::DataLocation
 Application Data
 /home/USER_NAME/.local/share/APP_NAME
 (/home/USER_NAME/.local/share/APP_NAME, /usr/share/ubuntu/APP_NAME, /usr/share/gnome/APP_NAME, /usr/local/share//APP_NAME, /usr/share//APP_NAME)
10 QStandardPaths::CacheLocation
 Cache
 /home/USER_NAME/.cache/APP_NAME
 (/home/USER_NAME/.cache/APP_NAME)
11 QStandardPaths::GenericDataLocation
 Shared Data
 /home/USER_NAME/.local/share
 (/home/USER_NAME/.local/share, /usr/share/ubuntu, /usr/share/gnome, /usr/local/share/, /usr/share/)
12 QStandardPaths::RuntimeLocation
 Runtime
 /run/user/USER_NAME
 (/run/user/USER_NAME)
13 QStandardPaths::ConfigLocation
 Configuration
 /home/USER_NAME/.config
 (/home/USER_NAME/.config, /etc/xdg/xdg-ubuntu, /etc/xdg)
14 QStandardPaths::DownloadLocation
 Download
 /home/USER_NAME/ダウンロード
 (/home/USER_NAME/ダウンロード)
15 QStandardPaths::GenericCacheLocation
 Shared Cache
 /home/USER_NAME/.cache
 (/home/USER_NAME/.cache)


/// Mac OS X 10.9の場合 ///
0 QStandardPaths::DesktopLocation
 デスクトップ
 /Users/USER_NAME/Desktop
 (/Users/USER_NAME/Desktop)
1 QStandardPaths::DocumentsLocation
 書類
 /Users/USER_NAME/Documents
 (/Users/USER_NAME/Documents)
2 QStandardPaths::FontsLocation
 Fonts
 /System/Library/Fonts
 (/System/Library/Fonts)
3 QStandardPaths::ApplicationsLocation
 アプリケーション
 /Applications
 (/Applications)
4 QStandardPaths::MusicLocation
 ミュージック
 /Users/USER_NAME/Music
 (/Users/USER_NAME/Music)
5 QStandardPaths::MoviesLocation
 ムービー
 /Users/USER_NAME/Movies
 (/Users/USER_NAME/Movies)
6 QStandardPaths::PicturesLocation
 ピクチャ
 /Users/USER_NAME/Pictures
 (/Users/USER_NAME/Pictures)
7 QStandardPaths::TempLocation
 TemporaryItems
 /var/folders/n4/hz9yt0n12nj1d047sk4zy03m0000gn/T
 (/var/folders/n4/hz9yt0n12nj1d047sk4zy03m0000gn/T)
8 QStandardPaths::HomeLocation
 Home
 /Users/USER_NAME
 (/Users/USER_NAME)
9 QStandardPaths::DataLocation
 Application Support
 /Users/USER_NAME/Library/Application Support/APP_NAME
 (/Users/USER_NAME/Library/Application Support/APP_NAME, /Library/Application Support/APP_NAME)
10 QStandardPaths::CacheLocation
 Caches
 /Users/USER_NAME/Library/Caches/APP_NAME
 (/Users/USER_NAME/Library/Caches/APP_NAME, /Library/Caches/APP_NAME)
11 QStandardPaths::GenericDataLocation
 Application Support
 /Users/USER_NAME/Library/Application Support
 (/Users/USER_NAME/Library/Application Support, /Library/Application Support)
12 QStandardPaths::RuntimeLocation
 Application Support
 /Users/USER_NAME/Library/Application Support
 (/Users/USER_NAME/Library/Application Support)
13 QStandardPaths::ConfigLocation
 Preferences
 /Users/USER_NAME/Library/Preferences
 (/Users/USER_NAME/Library/Preferences)
14 QStandardPaths::DownloadLocation
 書類
 /Users/USER_NAME/Documents
 (/Users/USER_NAME/Documents)
15 QStandardPaths::GenericCacheLocation
 Caches
 /Users/USER_NAME/Library/Caches
 (/Users/USER_NAME/Library/Caches, /Library/Caches)

MacのQStandardPaths::DownloadLocationは、本来は「/Users/USER_NAME/Downloads」が取得できるのではと思いますが謎です。 バグトラッカーにも登録されてなさそう・・・。