一、绝对路径
//< 获取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编译文件夹
未解决!之后再更新