Qt之路径总结

在做Qt项目的时候,我们难免遇到到文件路径问题。 如QFile file("text.txt")加载不成功、QPixmap("../text.png") 加载图片不成功等等。今天就来做一个关于Qt路径问题的小结!

 

一、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 资源系统是一个跨平台的资源机制,用于将程序运行时所需要的资源以二进制的形式存储于可执行文件内部。 如果你的程序需要加载特定的资源(图标、文本翻译等), 那么,将其放置在资源文件中,就再也不需要担心这些文件的丢失。也就是说,如果你将资源以资源文件形式存储,它是会编译到可执行文件内部。


所以再来讲讲Qt资源文件qrc文件的创建。
方法1、使用qtdesinger创建.qrc文件
  (1)在资源管理器窗口中选择新建一个资源文件.qrc,保存文件即可;
  (2)在资源管理器窗口中选择添加资源和文件即可;


方法2、手工写文件的方法,.qrc可以用记事本打开,以XML形式存在:

<RCC>

   <qresource prefix="/" > //前缀

      <file>image/text.png</file>

   </qresource>

</RCC>

然后在pro文件中添加一句 
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文件即可!

以上是针对QtCreator创建项目所设置的图片资源。

三、资源文件的添加

Qt项目开发过程中,对图片资源的使用比较频繁。

下面就讲讲图片资源的添加:
新建项目中的 test.qrc—>打开方式—>Qt Resource Edier—>添加资源文件,项目所需的图片资源就可以添加到项目资源文件了。

add file

我们在qtdesigner中有用到图片资源时,先把图片资源添加

qtdesigner中添加图片资源

以上是针对VS+Qt创建项目所设置的图片资源。

### 关于Qt路径配置与环境变量 在开发过程中,正确配置Qt路径和环境变量对于项目的正常编译和运行至关重要。以下是关于Qt路径配置和环境变量的相关说明: #### 1. **Windows平台下的Qt路径配置** 在Windows平台上,通常需要将Qt安装目录中的`bin`子目录添加到系统的`PATH`环境变量中。这样可以确保命令行能够识别并执行Qt相关的可执行文件和工具[^3]。 例如,如果Qt安装在`C:\Qt\5.15.2\msvc2019_64`,则应将以下路径添加到`PATH`环境变量中: ```plaintext C:\Qt\5.15.2\msvc2019_64\bin ``` 此操作可以通过系统属性对话框完成,或者通过PowerShell脚本实现自动化配置。 --- #### 2. **Linux/Mac平台下的Qt路径配置** 在Linux或Mac OS X环境下,同样需要将Qt的`bin`目录添加到用户的`PATH`环境中。此外,还需要考虑动态链接库的加载路径,即设置`LD_LIBRARY_PATH`(Linux)或`DYLD_LIBRARY_PATH`(macOS)。这些变量用于告知操作系统在哪里寻找共享库文件[^2]。 假设Qt安装在`/opt/qt/5.15.2/gcc_64`,那么可以在`.bashrc`或`.zshrc`中添加如下内容: ```bash export PATH=/opt/qt/5.15.2/gcc_64/bin:$PATH export LD_LIBRARY_PATH=/opt/qt/5.15.2/gcc_64/lib:$LD_LIBRARY_PATH ``` 完成后,需重新加载shell配置文件以使更改生效: ```bash source ~/.bashrc ``` --- #### 3. **Pro文件中的路径配置** 除了系统级的环境变量外,还可以在Qt项目文件(`.pro`)中定义特定的路径变量。常见的用法包括引入外部库、头文件夹以及其他资源文件的位置[^1]。 示例代码片段展示如何在`.pro`文件中指定自定义路径: ```makefile INCLUDEPATH += /path/to/include/files LIBS += -L/path/to/library/files -lmylib ``` 上述语句分别指定了头文件的搜索路径和链接器所需的库文件位置。 --- #### 4. **常见错误及其解决方案** 当遇到诸如“无法定位程序输入点_ZN10QArrayData10deallocateEPs_jj”的错误时,通常是由于缺少必要的依赖项或路径未正确定义所致。此时建议按照以下方法排查问题: - 确认目标机器上的Qt版本与开发者使用的版本一致; - 验证所有必需的DLL/SO文件均已随应用程序一同部署; - 使用工具如Dependency Walker (Windows) 或 `ldd` 命令(Linux),分析是否存在缺失的依赖关系。 --- #### 总结 无论是Windows还是Unix-like系统,合理地管理Qt相关路径及环境变量都是保障应用顺利构建的关键环节之一。务必依据实际需求调整相应参数,并注意跨平台间的差异性处理方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值