Qt中路径问题小结
来源:互联网 发布:java属性签名是什么 编辑:程序博客网 时间:2024/06/05 07:52
在做Qt项目的时候,我们难免遇到到文件路径问题。 如QFile file("text.txt")加载不成功、QPixmap("../text.png") 加载图片不成功等等。今天就来做一个关于Qt路径问题的小结!
首先需要弄清楚两个概念:绝对路径与相对路径
绝对路径: 文件在硬盘上真正存在的路径。例如“text.jpg”这个图片是存放在硬盘的“E:\book\目录下,那么 “text.jpg”这个图片的绝对路径就是“E:\book\text.jpg"
相对路径:由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系
如当前file1的路径是/user/File/file1/file1.txt,
File2的路径是/user/File/file2/file2.txt
那么file2相对于file的路径就是“../file2/file2.txt”。
相对路径里常使用“../”来表示上一级目录
弄清楚了上面两个概念,在来弄清楚我们常用到的“:/”与"./":
./ : 表示当前路径 如“./log/log1.txt” 表示当前路径下的log目录下的log1.txt
:/ : 表示对资源的引用,引用资源文件路径 如“:/image/start.png” 表示资源文件里面定义的文件start.png
现在我们来解释下QFile file("text.txt")加载不成功 ,如果text.txt是在可执行文件同级目录下,是可以打开的
的,否则则打不开
下面讲几个Qt常用的获取路径的函数
- 1 .获取应用程序可执行文件所在的目录: QCoreApplication::applicationDirPath();
- QString applicationDirPath;
- applicationDirPath = QCoreApplication::applicationDirPath();
- qDebug()<<"applicationDirPath"<<applicationDirPath;
- 2.获取应用程序可执行文件的文件路径: QCoreApplication::applicationFilePath();
- QString applicationFilePath;
- applicationFilePath = QCoreApplication::applicationFilePath();
- qDebug()<<"applicationFilePath"<<applicationFilePath;
- 3.获取应用程序当前工作目录的绝对路径:QString QDir::currentPath() (这个类似于“./”操作)
- QString currentPath;
- QDir dir;
- currentPath=dir.currentPath();
- qDebug()<<"path"<<currentPath;
- 将相对路径转化为绝对路径:
- QDir temDir("../../image.png");
- QString filePath = temDir.absolutePath();
- 这样就获得了一个文件的绝对路径了。
再来讲讲Qt资源系统:Qt 资源系统是一个跨平台的资源机制,用于将程序运行时所需要的资源以二进制的形式存储于可执行文件内部。 如果你的程序需要加载特定的资源(图标、文本翻译等), 那么,将其放置在资源文件中,就再也不需要担心这些文件的丢失。也就是说,如果你将资源以资源文件形式存储,它是会编译到可执行文件内部。
所以再来讲讲Qt资源文件qrc文件的创建。
方法1、使用qtdesinger创建.qrc文件
(1)在资源管理器窗口中选择新建一个资源文件.qrc,保存文件即可;
(2)在资源管理器窗口中选择添加资源和文件即可;
方法2、手工写文件的方法,.qrc可以用记事本打开,大概的形式是这样的:
- <RCC>
- <qresource prefix="/" > //前缀
- <file>image/text.png</file>
- </qresource>
- </RCC>
RESOURCES = xxx.qrc
这样在使用的时候QPixmap(":/image/text.png");就能加载成功了
同时为了以后我们修改text.png路径的时候我们还需要一处处的修改源代码,所以在建立资源qrc的时候,给每个资源文件起一个别名
如 :
<RCC>
<file alias="image_copy.png">images/copy.png</file>
</RCC>
这时该文件可以通过QPixmap(":/image_copy.png");能加载成功。
但通过QPixmap(":/images/copy.png");加载不成功,QT里“:/”表示对资源的引用,不是表示当前目录
==>使用别名是为了日后资源文件路径改变而去改动源代码。用别名后,只需要修改qrc文件即可!
转载自:http://blog.csdn.net/Andy_93/article/details/52831175
阅读全文
0 0
- Qt中路径问题小结
- Qt中路径问题小结
- Qt中路径问题小结
- QT中添加的资源文件qrc时的路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- va Web开发中路径问题小结 .
- Java Web开发中路径问题小结
- JavaWeb开发中路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- Java Web开发中路径问题小结
- cpp引用的运用场景
- springmvc静态资源解析异常的问题
- Python selenium自动化识别验证码模拟登录操作(二)
- Promise在工作中常用的几种示例
- 使用ES6语法进行Base64的编码和解码
- Qt中路径问题小结
- 计蒜客-子树结点个数
- Javascript学习笔记(String对象)
- stm32_013_STM32printf()函数重定向到串口
- Spring Cloud(五)断路器监控(Hystrix Dashboard)
- IBM-UK ftp资料站
- 【概率论与数理统计】-排列组合笔试题汇总
- Hadoop本地模式、伪分布模式的安装
- React 虚拟dom是如何实现的