Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径、用户目录路径、临时文件夹等。在 Qt 中实现这几个功能所用的方法虽然都不难,但是各不相同,每次用到时还要现去查,很不方便。因此就写了这篇博客,把这几种需求的实现方式总结了一下。算是个备忘录吧。
程序所在路径
获取程序所在路径,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()
如果我们是双击一个程序运行的,那么程序的工作目录就是程序所在目录。
如果是在命令行下运行一个程序,那么运行程序时在命令行的哪个目录,那个目录就是当前目录。
用户目录路径
Qt 4 中的方法。下面的方法只对 Qt 4 有效,Qt 5 已经删除了 storageLocation() 方法。
QDesktopServices::storageLocation(QDesktopServices::HomeLocation);
Qt 5 中引入的方法。
QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
或者
QStandardPaths::standardLocations(QStandardPaths::HomeLocation);
这两个方法的区别是 standardLocations() 返回值是 QStringList。当然对于 HomeLocation 来说这个 QStringList 中只有一个 QString。
还有另外一种方法,利用 QDir 类的一个静态函数:
QDir::homePath();
我的文档路径
Qt 4 中的方法。
下面的方法只对 Qt 4 有效,Qt 5 已经删除了 storageLocation() 方法。
QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
Qt 5 中引入的方法。
QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);
桌面路径
Qt 4 中的方法。下面的方法只对 Qt 4 有效,Qt 5 已经删除了 storageLocation() 方法。
QDesktopServices::storageLocation(QDesktopServices::DesktopLocation);
Qt 5 中引入的方法。
QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);
程序数据存放路径
通常我们会将程序所需的一些数据存入注册表。但是有时需要存储的数据太多,放在注册表中就不适合了。这时我们就要找个专门的地方来放数据。以前我喜欢将数据直接放到程序所在目录,但是后来发现我的程序运行时经常没有权限对这个目录下的文件进行写操作。后来发现其实 Qt 早就替我们考虑过这些问题了。
Qt 4 中的方法。下面的方法只对 Qt 4 有效,Qt 5 已经删除了 storageLocation() 方法。
QDesktopServices::storageLocation(QDesktopServices::DataLocation);
Qt 5 中引入的方法。
QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
Qt 5.5 中引入了另一种方法:
QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation);
这个方法一般来说和上面的方法得到的结果是相同的。按照 Qt 帮助文档的解释,这个方法可以确保返回的路径非空。所以我认为应该优先选用这个方法。
临时文件路径
Qt 4 中的方法。下面的方法只对 Qt 4 有效,Qt 5 已经删除了 storageLocation() 方法。
QDesktopServices::storageLocation(QDesktopServices::TempLocation);
Qt 5 中引入的方法。
QStandardPaths::writableLocation(QStandardPaths::TempLocation);
QStandardPaths::standardLocations(QStandardPaths::TempLocation);
更传统的方法是利用 QDir 的一个静态函数 tempPath()。
QDir::tempPath();
在这个目录下生成临时文件和临时目录需要用到另外两个类: QTemporaryFile 和 QTemporaryDir。就不展开介绍了,大家可以参考 qt 的帮助文档。
至此,常用的各种特殊路径就介绍的差不多了。剩下还有些不常用的,可以参考 QStandardPaths 类的介绍。
更多参考
转载于:https://www.cnblogs.com/ZY-Dream/p/10632967.html
Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法相关推荐
- qt 获取当前程序运行路径_Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法...
Qt 程序获取程序所在路径.用户目录路径.临时文件夹等特殊路径的方法 经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径.用户目录路径.临时文件夹等.在 Qt 中实现这几个功能所用的方法虽然都 ...
- 微信小程序获取当前所在城市(地区定位与切换)
小程序地区定位与切换 添加链接描述 添加链接描述 添加链接描述 <text class="chengshi">{{citynames}}</text>< ...
- Python中无法使用“~”获取Ubuntu系统的用户目录
经测试后发现:Python中无法使用"~"获取Ubuntu系统的用户目录, 测试代码如下: if os.path.isdir("~"):print(" ...
- c# 用户帐户临时文件夹_注册帐户,上传文件以供批准,以及查看和下载批准的文件
c# 用户帐户临时文件夹 在你开始前 在本系列的第一部分中,您将学习基本PHP语法,形式和功能,以及如何通过PHP应用程序连接和使用MySQL或任何其他数据库. 关于本教程 本教程将引导您使用PHP构 ...
- python win7正常的文件路径到win10报错_如何更改临时文件路径_win10怎么更改临时文件夹的路径图文步骤...
2015-09-16 17:27:19 最近,有位win10系统用户反映自己电脑中的临时文件夹存放空间已经满了,因此想要更改掉之前的临时文件夹路径.这该如何操作呢?接下来,小编就向大家分享window ...
- Qt实现 获取程序所在的各种路径
在对文件做操作时,,虽然我们知道文件的路径所在,但是程序并不知道,所以这时候必不可少的需要获取文件所在的路径以方便打开它的文件IO流, 以及调用第三方软件的时候也需要获取该exe所在的位置.如果我们通 ...
- 临时文件_Go语言学习基础-文件路径、目录、临时文件和目录
File Path 文件路径 filepath包提供了解析和构造文件路径的函数,这种方法在操作系统之间是兼容的:例如,Linux上的dir/file与Windows上的dirfile都可以有效识别. ...
- 小程序 获取当前所在地理位置 城市 信息
需求:在小程序首页需要显示用户所在城市. 解决方案:使用wx.getLocation获取经纬度坐标,再使用微信小程序JavaScript SDK的地址逆解析方法reverseGeocoder,就可以完 ...
- 小程序获取城市经纬度_微信小程序获取当前所在城市的方法
现在很多企业商家为了提供更准确的服务,基本都要获取用户当前所在的地理位置,城市是其中最基本的.而微信小程序官方提供的API只能获取当前地理位置的经纬度,需要经过第三方转换才可以得到我所需的城市名,经过 ...
最新文章
- FZU2020 lucas定理求解组合数
- QT4 自定义槽和信号
- ios UIPickerView 技巧集锦
- python打开快捷方式_Python创建启动目录的快捷方式,python,到
- c# 网口相机可以通过_电脑可以跑安卓9.0了!完全免费
- 在Winform开发中使用FastReport创建报表
- LeetCode#70 Climbing Stairs
- python爬图mzitu_小白学 Python 爬虫(16):urllib 实战之爬取妹子图
- oracle获取timestamp日期,oracle日期时间型timestamp的深入理解
- iphone html 手机震动,iPhone来电不会震动怎么回事?简单几招排查技巧
- labview 网络通讯 TCP
- JSP核心——分页查询
- 目标检测算法之常见评价指标的详细计算方法及代码解析
- 11. WS · HTTPDNS · FTP · 邮件
- 华为服务器 维护手册,华为常用维护手册.doc
- html 怎么传递时间戳,记时 传入 时间戳
- 用户同步管理及集群初始配置-集群搭建步骤7
- 详解:IP地址132.119.100.200的子网掩码是255.255.255.240,那么它所在子网的广播地址是(132.119.100.207)
- meego-handset开发环境配置
- Linux学习记录8-SUSE和OpenSUSE
热门文章
- 【JS 逆向百例】有道翻译接口参数逆向
- REVERSE-PRACTICE-CTFSHOW-1
- CCIE-LAB-第十篇-BGP-VPNV4+VNPN6+MPLS+关闭TTL
- 【Python学习】 - 解决DataFrame占用内存过大问题
- 知识点总结vector创建二维数组
- java 自定义xml_6.1 如何在spring中自定义xml标签
- python运算符中用来计算整商的是什么_零基础学python,看完这篇文章,你的python基础就差不多了...
- 通过反射获得私有构造器,创建对象
- 基于matlab的信号与系统实例,华南理工大学信号与系统实验基于Matlab的信号处理实例...
- 使用 CXF 做 webservice 简单例子