比如我们有一个程序在:

  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;

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

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

    Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都 ...

  2. 如何修改IDM下载器的临时文件夹位置

    所有的应用程序在下载时,都会有一些默认的选项.比如产生的临时文件存放在C盘目录下,或者定期自动更新等设置.那么当我们的计算机上安装了很多程序之后,C盘的空间就会渐渐地变小了,从而有了空间不足等等情况, ...

  3. [ubuntu]中文用户目录路径改英文

    ubuntu中文版home文件夹里用目录的"桌面"."图片"."视频"虽然对于中文使用者看起来舒适直观,但是对于bash使用来说简直是障碍. ...

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

    private void Border_MouseLeftButtonUp_4(object sender, MouseButtonEventArgs e) { //获取项目中文件 , System. ...

  5. php遍历目录与文件夹的多种方法详解

    遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的.PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴.下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋 ...

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

    有时我们需要获得浏览器窗口或屏幕的大小.窗口下拉框下拉的距离等数据,对应这些需求,js中提供了不少解决方法,只是数量稍多容易混淆它们各自的意义,下面咱们用图例来解释下12个常见对象属性的作用. 其中有 ...

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

    几个有用的PHP.ini配置项-路径和目录 路径和目录1.include_path = string作用域:PHP_INI_ALL默认值:NULL此参数指定的路径是include().require( ...

  8. PHP获取路径或目录实现

    <?php /**  * PHP获取路径或目录实现  */    //魔术变量,获取当前文件的绝对路径 echo "__FILE__: ========> ".__FI ...

  9. iOS的相对路径和绝对路径

    iOS程序有固定的文件访问限制,只能在自己的沙盒内. UIImage *img=[UIImage imageNamed:@"cellicon.png"]; 这段代码从相对路径加载了 ...

随机推荐

  1. spring batch遇到的一些问题

    1.Spring Batch - A job instance already exists: JobInstanceAlreadyCompleteException 这是因为JobParameter ...

  2. android xml 解析汉字只出来一个字的问题

    DocumentBuilderFactory factory = DocumentBuilderFactory .newInstance(); // 实例化DocumentBuilder factor ...

  3. Servlet会话管理三(HttpSession)

    Session是服务器端技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的HttpSession对象.由于Session为浏览器用户所独享,所以用户在访问服务器的web资源时,可以把各自的数 ...

  4. 无法嵌入互操作类型"ESRI.ArcGIS.Carto.MapDocumentClass".请改用适用的接口

    在对地图文档进行操作时,居然出现如下问题: IMapDocument m_MapDocument = new ESRI.ArcGIS.Carto.MapDocumentClass(); 报错: 无法嵌 ...

  5. vue input,textarea失去焦点调用函数方法

    <input type="number" class="num" value="1" @blur.prevent="chan ...

  6. spring mvc 提交表单汉字乱码

    修改web.xml添加如下信息 <filter> <filter-name>characterEncodingFilter</filter-name> <fi ...

  7. IOS初级:AFNetworking

    狗 日的,第三方框架真j8难搞 1.为什么NS_ASSUME_NONNULL_BEGIN在6.2报错,你他么的还挑IDE,你这是什么态度? 2.还有,你他么的自动给老子转json了,有问过我么? #i ...

  8. php与html代码的若干转换

    以前懵懵懂懂的看过,没怎么在意,现在总结一下 一般来说,像留言板之类的content,用这样的就够了: $content=addslashes(htmlspecialchars($_POST['con ...

  9. rsync (转载)

    rsync 编辑   rsync是类unix系统下的数据镜像备份工具——remote sync. 目录 1简介 2特性 3操作流程 ▪ 服务器端启动 ▪ 客户端同步 4安装     1简介编辑 rsy ...

  10. BP神经网络测试MNIST记录

    约定: 所有的初始化权值范围,如下,就是说更换激活函数的情况,没有过大的调整初始权重. if(randomMode==1): numpy.random.seed(seedWih) self.wih = ...