Qt - 如何在多个平台上保存配置文件

Rap*_*ael 3 c++ qt cross-platform

我正在编写一个需要将一些设置保存到用户配置目录的Qt应用程序.

我想出了以下代码来获取此文件夹:

#ifdef Q_WS_WIN
    path = QDir::homePath() + "/Application Data/Timely";
#else
    path = QDir::homePath() + "/.config/Timely";
#endif
Run Code Online (Sandbox Code Playgroud)

这在Windows 7上失败,因为Windows 7使用App Data/Roaming/[YourApp].如何以跨平台方式获取用户的配置文件夹?我错过了一些明显的东西吗?(这应该是一项简单的任务)

tib*_*bur 11

取决于您要记录的设置,但我建议使用QSettings.


gnu*_*nud 6

是的,这应该是一项简单的任务 - 但你应该硬编码路径.您应该在win/mac上使用本机API,在大多数较新的unix上使用环境变量.当然,Qt可以帮助您实现跨平台.

按照Tibur的建议,如果它是Qt应用程序的配置数据,请使用QSettings.您还可以使用适当的QT api获取config目录.

QT4: QT5:QDesktopServices::storageLocation(QDesktopServices::DataLocation)
QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)