刚开始学习Qt的时候为了得到当前文件夹,书上说的都QDir::currentPath(),后来又一次写另一个开机自启动的程序,发现开机启动的时候通过该方法得到的图片全都没有载入,网上搜索半天,没有得到答案。。后来自己用qDebug输出该方法得到的路径,结果居然是C盘下的system32 目录,经过查assistant ,发现了QApplication::applicationDirPath()的方法,同时用qDebug()输出两个方法得到的路径,结果是:无论是否开机自启动,后者都输出编译后exe文件所在的文件夹目录,而前者仅在双击exe程序的时候才返回该目录,至此终于明白了这两个函数的区别。。。。从那以后,我每次要得到资源(资源文件除外),都是使用QApplication::applicationDirPath()这个方法,也没有再出现过那个问题了。。
不仅解决了这个问题,我还可以利用这一点。比如有时候我们要对用户双击和开机自启动做出不同的响应,首先我们得区分到底是用户双击,还是开机自启动的,这时候,这两个方法就可以派上用场了,只要比较两个方法得到的结果是否一致,是则表明是用户双击,否则可以判断是开机自启动,或者经过其他程序启动,这样就可以对不同的启动方式做不同的响应。。。。
希望对大家有帮助!!!!