2014-01-12 63 views
1

当我的应用程序从Windows的自动启动开始,Qt是不能够打开它。 导致此错误是QDir().absoluteFilePath("settings.cnf") 返回路径C:/Windows/system32/settings.cnf即使我的文件在我的工作目录。Windows的自动启动:应用程序目录似乎是C:/窗/ SYSTEM32/

有人知道我必须调用什么方法来获得正确的路径吗?

+0

QCoreApplication :: applicationDirPath()返回什么?看起来,启动一个应用程序与Windows自动启动(我不知道它是什么)将应用程序工作目录设置为system32文件夹。请注意,它可能与“包含应用程序可执行文件的目录”不同。 – azf

回答

1

使用默认的构造函数的QDir()默认为当前工作目录,它可以是任何东西,从用户或系统启动的应用程序依赖。对于UI应用程序,这是一个通常应该完全忽略的路径。

访问数据旁边的应用程序二进制文件,使用QCoreApplication::applicationDirPath()。这通常用于与程序一起安装的全局只读数据。

对于用户可写的配置设置和缓存的数据,请使用QStandardPaths(Qt 5)或QDesktopServices::storageLocation()(Qt 4)。

+0

谢谢。 QCoreApplication :: applicationDirPath()+“/ settings.cnf”适用于我。 –

1

没有特别的理由来定义GUI程序的工作目录。由于相对路径是相对于工作目录而言的,相对路径的使用隐含了一个定义良好且有意义的工作目录。现在

,你真的想寻找在同一个目录下的可执行文件。所以正确的方法是找到可执行文件的完整路径,剥离文件名并追加文件名。现在你有完整的文件路径。

一般来说,工作目录仅适用于控制台应用程序有意义。所以只能在控制台应用程序中使用相对路径。