当前位置: 代码迷 >> 综合 >> Qt 绝对路径 相对路径 记录
  详细解决方案

Qt 绝对路径 相对路径 记录

热度:89   发布时间:2023-12-12 04:54:39.0

一、绝对路径

//< 获取exe文运行时所在的绝对路径
app.applicationDirPath()  //< 获取工作目录的绝对路径,不同情况,返回的目录可能不同
QDir::currentPath()

关于QDir::currentPath()的坑

(1)在vs2010中,之间按F5调试,QDir::currentPath()为“盘符:\工程名\工程名”(也就是从***cpp和***文件所在的路径,如:E:\vs2010\qt\QtProjects\tenNumAdd\tenNumAdd)

(2)直接到vs2010工程相应的目录下(Debug或Release)去双击exe文件,QDir::currentPath()为“盘符:\工程名\工程名\Debug”,如:E:\vs2010\qt\QtProjects\tenNumAdd\tenNumAdd\Debug

(3)通过cmd的命令启动相应的exe文件(如:start  E:\vs2010\qt\QtProjects\tenNumAdd\tenNumAdd\Debug\***.exe),QDir::currentPath()为:C:\用户名。如果此时我所在的用户名为administrator,则QDir::currentPath()为C:\administrator

由此可见,QDir::currentPath()在第三种情况下就不是我们想要的了
 

QAppllication::appllicationDirPath()

而无论你通过何种途径去运行exe文件,QAppllication::appllicationDirPath()的路径始终都是exe文件所在的绝对路径。

因此,如果想要获取固定的exe路径信息,还是建议使用QAppllication::appllicationDirPath()
 

参考:区分并利用QDir::currentPath()和QApplication::applicationDirPath()

 

二、相对路径

一般是用 "./" ":/"

  • "./" 这是工作目录的路径,也就是QDir::currentPath()的路径,如下图

注意:QDir::currentPath()的路径是会变的,如果在工程中是工程目录的路径,假如是非工程中,直接运行,获取的是程序的路径,所以一般不使用“./”来获取路径,这时候可以用Qt的qrc来加载

 

  • ":/" 这个比较简单,就是qrc里面的路径加上“:/”就好了。

如下图,可以这样用:

QFilef(":/gui/stylesheets/black.css");

 

工作相关要求

  • QProcess启动cmd
  • 通过cmd启动exe所在路径下的外部程序

遇到的问题

  • windows文件夹的路径在Qt里需要加转移字符“\”

在Qt内添加转义字符

QString dfuFileRoute("C:\\Users\\Administrator\\Desktop\\dfu\\Release\\test.dfu");
  • 访问exe所在的路径

参考链接https://blog.csdn.net/qq_38159549/article/details/105387057

  • 通过cmake pro pri 拷贝项目下的文件至QDebug编译文件夹

未解决!之后再更新

  相关解决方案