欢迎转载,请注明出处:https://blog.csdn.net/qq_39453936?spm=1010.2135.3001.5343
原文链接: https://blog.csdn.net/qq_39453936/article/details/120720369
系统标准路径类QStandardPaths
//尝试在类型的标准位置中查找名为fileName的文件或目录。
//返回找到的第一个文件或目录(取决于选项)的完整路径。如果找不到这样的文件或目录,则返回空字符串。
[static] QString QStandardPaths::locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)
//尝试在类型的标准位置中查找名为fileName的所有文件或目录。
//选项标志允许指定是否查找文件或目录。
//返回找到的所有文件的列表。
[static] QStringList QStandardPaths::locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)
//返回给定位置类型的本地化显示名称,如果找不到相关位置,则返回空QString。
[static] QString QStandardPaths::displayName(QStandardPaths::StandardLocation type)
//在路径指定的路径或系统路径(如果路径为空)中查找名为executableName的可执行文件。
//返回可执行文件的绝对文件路径,如果未找到,则返回空字符串。
[static] QString QStandardPaths::findExecutable(const QString &executableName, const QStringList &paths = QStringList())
//返回类型为的文件所属的所有目录。
//目录列表从高优先级到低优先级排序,如果可以确定位置,则从writableLocation()开始。如果未定义类型的位置,则此列表为空。
[static] QStringList QStandardPaths::standardLocations(QStandardPaths::StandardLocation type)
//返回类型为的文件应写入的目录,如果无法确定位置,则返回空字符串。
//注意:返回的存储位置可以是不存在的目录;i、 例如,它可能需要由系统或用户创建。
[static] QString QStandardPaths::writableLocation(QStandardPaths::StandardLocation type)
枚举QStandardPaths::StandardLocation
QStandardPaths类型在不同系统中的相关路径:
Path type | macOS | Windows |
---|---|---|
Path type | macOS | Windows |
DesktopLocation | “~/Desktop” | “C:/Users/< USER>/Desktop” |
DocumentsLocation | “~/Documents” | “C:/Users/< USER>/Documents” |
FontsLocation | “/System/Library/Fonts” (not writable) | “C:/Windows/Fonts” (not writable) |
ApplicationsLocation | “/Applications”(not writable) | “C:/Users/< USER>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs” |
MusicLocation | “~/Music” | “C:/Users/< USER>/Music” |
MoviesLocation | “~/Movies” | “C:/Users/< USER>/Videos” |
PicturesLocation | “~/Pictures” | C:/Users/< USER>/Pictures" |
TempLocation | randomly generated by the OS | “C:/Users/< USER>/AppData/Local/Temp” |
HomeLocation | “~” | “C:/Users/< USER>” |
DataLocation | “~/Library/Application Support/< APPNAME>”, “/Library/Application Support/< APPNAME>”. “< APPDIR>/…/Resources” | “C:/Users/< USER>/AppData/Local/< APPNAME>”, “C:/ProgramData/< APPNAME>”, “< APPDIR>”, “< APPDIR>/data”, “< APPDIR>/data/< APPNAME>” |
CacheLocation | “~/Library/Caches/< APPNAME>”, “/Library/Caches/< APPNAME>” | “C:/Users/< USER>/AppData/Local/< APPNAME>/cache” |
GenericDataLocation | “~/Library/Application Support”, “/Library/Application Support” | “C:/Users/< USER>/AppData/Local”, “C:/ProgramData”, “< APPDIR>”, “< APPDIR>/data” |
RuntimeLocation | “~/Library/Application Support” | “C:/Users/< USER>” |
ConfigLocation | “~/Library/Preferences” | “C:/Users/< USER>/AppData/Local/< APPNAME>”, “C:/ProgramData/< APPNAME>” |
GenericConfigLocation | “~/Library/Preferences” | “C:/Users/< USER>/AppData/Local”, “C:/ProgramData” |
DownloadLocation | “~/Downloads” | “C:/Users/< USER>/Documents” |
GenericCacheLocation | “~/Library/Caches”, “/Library/Caches” | “C:/Users/< USER>/AppData/Local/cache” |
AppDataLocation | “~/Library/Application Support/< APPNAME>”, “/Library/Application Support/< APPNAME>”. “< APPDIR>/…/Resources” | “C:/Users/< USER>/AppData/Roaming/< APPNAME>”, “C:/ProgramData/< APPNAME>”, “< APPDIR>”, “< APPDIR>/data”, “< APPDIR>/data/< APPNAME>” |
AppLocalDataLocation | “~/Library/Application Support/< APPNAME>”, “/Library/Application Support/< APPNAME>”. “< APPDIR>/…/Resources” | “C:/Users/< USER>/AppData/Local/< APPNAME>”, “C:/ProgramData/< APPNAME>”, “< APPDIR>”, “< APPDIR>/data”, “< APPDIR>/data/< APPNAME>” |
AppConfigLocation | “~/Library/Preferences/< APPNAME>” | “C:/Users/< USER>/AppData/Local/< APPNAME>”, “C:/ProgramData/< APPNAME>” |
获取程序所在路径
QCoreApplication 类里就实现了相关的功能:
QString QCoreApplication::applicationDirPath()
比如我们有一个程序在:
C:/Qt/examples/tools/regexp/regexp.exe
那么 qApp->applicationDirPath() 的结果是:
C:/Qt/examples/tools/regexp
如果除了程序所在路径,我们还想要程序的完整名称。那么可以这么写:
qApp->applicationFilePath()
还是上面的例子,结果是:
C:/Qt/examples/tools/regexp/regexp.exe
获取当前工作目录
QDir 提供了一个静态函数 currentPath() 可以获取当前工作目录,函数原型如下:
QString QDir::currentPath()
如果我们是双击一个程序运行的,那么程序的工作目录就是程序所在目录。
如果是在命令行下运行一个程序,那么运行程序时在命令行的哪个目录,那个目录就是当前目录。
参考文章:https://blog.csdn.net/liyuanbhu/article/details/53710249
小白发文,欢迎指正