Windows-Autostart:应用程序目录似乎是C:/ Windows / system32 /

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

有人知道我必须调用什么方法才能find正确的path吗?

Solutions Collecting From Web of "Windows-Autostart:应用程序目录似乎是C:/ Windows / system32 /"

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

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

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

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

现在,您实际上想要在可执行文件的同一目录中查找文件。 因此,正确的方法是找到可执行文件的完整路径,剥离文件名并追加文件名。 现在你有完整的文件路径。

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