Qt - 获取各种路径的方法

欢迎转载,请注明出处:https://blog.csdn.net/qq_39453936?spm=1010.2135.3001.5343
原文链接: https://blog.csdn.net/qq_39453936/article/details/120720369

获取各种路径的方法

  • 系统标准路径类QStandardPaths
  • 枚举QStandardPaths::StandardLocation
  • 获取程序所在路径
  • 获取当前工作目录


系统标准路径类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
小白发文,欢迎指正

你可能感兴趣的:(Qt,qt,c++,windows)