2

当我的应用程序从 Windows 的自动启动启动时,Qt 无法打开它。导致这种情况的错误是即使我的文件位于我的工作目录中也会QDir().absoluteFilePath("settings.cnf") 返回路径。C:/Windows/system32/settings.cnf

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

4

2 回答 2

2

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

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

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

于 2014-01-12T16:20:58.420 回答
2

定义 GUI 程序的工作目录没有特别的原因。由于相对路径是相对于工作目录的,因此使用相对路径意味着一个定义明确且有意义的工作目录。

现在,您实际上想要在与可执行文件相同的目录中查找文件。所以正确的方法是找到可执行文件的完整路径,去掉文件名,并附加你的文件名。现在您有了文件的完整路径。

作为一般规则,工作目录只对控制台应用程序有意义。所以只能在控制台应用程序中使用相对路径。

于 2014-01-12T16:25:07.273 回答