• 9335阅读
  • 4回复

[原创]区分并利用QDir::currentPath 和 QApplication::applicationDirPath [复制链接]

上一主题 下一主题
离线capjason
 

只看楼主 倒序阅读 楼主  发表于: 2012-09-08
— 本帖被 XChinux 从 Qt 作品展 移动到本区(2013-02-21) —
关键词: QT4问题读入
刚开始学习Qt的时候为了得到当前文件夹,书上说的都QDir::currentPath(),后来又一次写另一个开机自启动的程序,发现开机启动的时候通过该方法得到的图片全都没有载入,网上搜索半天,没有得到答案。。后来自己用qDebug输出该方法得到的路径,结果居然是C盘下的system32 目录,经过查assistant ,发现了QApplication::applicationDirPath()的方法,同时用qDebug()输出两个方法得到的路径,结果是:无论是否开机自启动,后者都输出编译后exe文件所在的文件夹目录,而前者仅在双击exe程序的时候才返回该目录,至此终于明白了这两个函数的区别。。。。从那以后,我每次要得到资源(资源文件除外),都是使用QApplication::applicationDirPath()这个方法,也没有再出现过那个问题了。。


不仅解决了这个问题,我还可以利用这一点。比如有时候我们要对用户双击和开机自启动做出不同的响应,首先我们得区分到底是用户双击,还是开机自启动的,这时候,这两个方法就可以派上用场了,只要比较两个方法得到的结果是否一致,是则表明是用户双击,否则可以判断是开机自启动,或者经过其他程序启动,这样就可以对不同的启动方式做不同的响应。。。。


希望对大家有帮助!!!!
离线jdwx

只看该作者 1楼 发表于: 2012-09-08
QDir::currentPath()
有时候返回用户的目录,就是用户名。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线capjason

只看该作者 2楼 发表于: 2012-09-09
回 1楼(jdwx) 的帖子
我猜想qdir:currentPath返回程序运行目录,如果用cmd命令启动程序,应该返回cmd所在目录
离线julian229
只看该作者 3楼 发表于: 2013-02-21
说的好,我一直使用QDir::currentPath(),可能因为程序都是手动启动的,而没有出现问题,以后会改用QApplication::applicationDirPath()了。多谢LZ
离线lengyuehui

只看该作者 4楼 发表于: 2014-02-09
俺的QApplication::applicationDirPath怎么返回空值呀?
快速回复
限100 字节
 
上一个 下一个