Qt程序关于路径、用户目录路径、临时文件夹位置获取方法

  比如我们有一个程序在:

  C:/Qt/examples/tools/regexp/regexp.exe

1. 程序所在目录

  QString QCoreApplication::applicationDirPath()

  那么 qApp->applicationDirPath() 的结果是:

  输出:C:/Qt/examples/tools/regexp  

2. 程序的完整名称。那么可以这么写:

  qApp->applicationFilePath()

  输出:C:/Qt/examples/tools/regexp/regexp.exe

3. 当前工作目录

 QDir 提供了一个静态函数 currentPath() 可以获取当前工作目录

  如果我们是双击一个程序运行的,那么程序的工作目录就是程序所在目录。

  如果是在命令行下运行一个程序,那么运行程序时在命令行的哪个目录,那个目录就是当前目录。

4. 用户目录路径

  Qt 5 中引入的方法

  QStandardPaths::writableLocation(QStandardPaths::HomeLocation);

  QStandardPaths::standardLocations(QStandardPaths::HomeLocation);

  这两个方法的区别是 standardLocations() 返回值是 QStringList。当然对于 HomeLocation 来说这个 QStringList 中只有一个 QString。

  还有另外一种方法,利用 QDir 类的一个静态函数:

  QDir::homePath();

5. 我的文档路径

   Qt 5 中引入的方法。

  QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);

  QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);

6. 桌面路径

  QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);

  QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);

7. 程序数据存放路径

  通常我们会将程序所需的一些数据存入注册表。但是有时需要存储的数据太多,放在注册表中就不适合了。这时我们就要找个专门的地方来放数据。以前我喜欢将数据直接放到程序所在目录,但是后来发现我的程序运行时经常没有权限对这个目录下的文件进行写操作。后来发现其实 Qt 早就替我们考虑过这些问题了。

  Qt 5 中引入的方法。

  QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);

  QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);

  Qt 5.5 中引入了另一种方法:  

  QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);

  QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation);

  这个方法一般来说和上面的方法得到的结果是相同的。按照 Qt 帮助文档的解释,这个方法可以确保返回的路径非空。所以我认为应该优先选用这个方法。

8. 临时文件路径

  Qt 5 中引入的方法。

  QStandardPaths::writableLocation(QStandardPaths::TempLocation);

  QStandardPaths::standardLocations(QStandardPaths::TempLocation);

  更传统的方法是利用 QDir 的一个静态函数 tempPath()。

  QDir::tempPath();

  在这个目录下生成临时文件和临时目录需要用到另外两个类: QTemporaryFile 和 QTemporaryDir。就不展开介绍了,大家可以参考 qt 的帮助文档。

至此,常用的各种特殊路径就介绍的差不多了。剩下还有些不常用的,可以参考 QStandardPaths 类的介绍。

endl;

时间: 2024-10-16 23:47:58

Qt程序关于路径、用户目录路径、临时文件夹位置获取方法的相关文章

Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法

Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都不难,但是各不相同,每次用到时还要现去查,很不方便.因此就写了这篇博客,把这几种需求的实现方式总结了一下.算是个备忘录吧. 程序所在路径 获取程序所在路径,QCoreApplication 类里就实现了相关的功能: QString QCoreApplication::applicationDirPa

图解js中常用的判断浏览器窗体、用户屏幕可视区域大小位置的方法

有时我们需要获得浏览器窗口或屏幕的大小.窗口下拉框下拉的距离等数据,对应这些需求,js中提供了不少解决方法,只是数量稍多容易混淆它们各自的意义,下面咱们用图例来解释下12个常见对象属性的作用. 其中有6个常用的浏览器窗体属性(由于offsetWidth/Height在不同浏览器下表现有出入,故不在本章讨论): document.documentElement.clientWidth document.documentElement.clientHeight document.documentEl

获取沙盒路径,Documents目录路径,Caches目录路径,tmp目录路径的方法

//1,获取沙盒目录路径的函数:NSString *homeDir = NSHomeDirectory(); //2,获取Documents目录路径的方法:NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);NSString *docDir = [paths objectAtIndex:0]; //3,获取Caches目录路径的方法:NSArray *path

返回当前程序运行所在的目录路径

Console.WriteLine(AppDomain.CurrentDomain.BaseDirectory); Console.WriteLine(Environment.CurrentDirectory);

WPF 获取文件夹路径,目录路径,复制文件,选择下载文件夹/目录

private void Border_MouseLeftButtonUp_4(object sender, MouseButtonEventArgs e) { //获取项目中文件 string WantedPath = System.Windows.Forms.Application.StartupPath.Substring(0, System.Windows.Forms.Application.StartupPath.LastIndexOf(@"\")); string path

PHP获取当前文件路径,上层目录路径

取的現在檔案.目錄.上層目錄 於 test.php 內, 要做取得路徑.目錄等, 可見下述: 取得 路徑 + 檔名 (要取得 /var/www/project/test.php) * echo __FILE__; 取得 檔名 (要取得 test.php) * echo basename(__FILE__); 取得 不含附檔名的檔名 (要取得 test) * echo basename(__FILE__, '.php'); 取得 到此目錄前的完整 PATH, 不含檔名 (要取得 /var/www/

几个有用的PHP.ini配置项-路径和目录

几个有用的PHP.ini配置项-路径和目录 路径和目录1.include_path = string作用域:PHP_INI_ALL默认值:NULL此参数指定的路径是include().require()和fopen_with_path()等函数使用的基本路径.若存在多个目录,用分号分隔. 2.doc_root = string作用域:PHP_INI_SYSTEM默认值:NULL此参数确定提供所有PHP脚本的默认位置.非空时才生效. 3.user_dir = string作用域:PHP_INI_S

PHP获取路径或目录实现

<?php /**  * PHP获取路径或目录实现  */   //魔术变量,获取当前文件的绝对路径 echo "__FILE__: ========> ".__FILE__; echo '<br/>';   //魔术变量,获取当前脚本的目录 echo "__DIR__: ========> ".__DIR__; echo '<br/>';   //dirname返回路径的目录部分,dirname(__FILE__)相当于_

iOS的相对路径和绝对路径

iOS程序有固定的文件访问限制,只能在自己的沙盒内. UIImage *img=[UIImage imageNamed:@"cellicon.png"]; 这段代码从相对路径加载了一个png图片资源作为UIImage对象,没有任何问题.因为它在内部已经偷偷得帮你把路径转化为相对路径了,你还不知道吧! 接下来,如果要加载一些自定义格式的文件或者数据,就会出现相对路径和绝对路径的问题.比如 NSFileHandle *fileHandle=[NSFileHandlefileHandleFo