当我的应用程序从Windows的自动启动启动时,Qt无法打开它。
导致此问题的错误是QDir().absoluteFilePath("settings.cnf")
即使我的文件位于我的工作目录中,也会返回路径C:/Windows/system32/settings.cnf
。
有人知道我必须打电话才能找到正确的道路吗?
答案 0 :(得分:1)
使用默认构造函数QDir()默认为当前工作目录,可以是任何内容,具体取决于用户或系统启动应用程序的位置。对于UI应用程序,这通常应该完全忽略。
要访问应用程序二进制文件旁边的数据,请使用QCoreApplication::applicationDirPath()。这通常用于随程序安装的全局只读数据。
对于用户可写配置设置和缓存数据,请使用QStandardPaths(Qt 5)或QDesktopServices::storageLocation()(Qt 4)。
答案 1 :(得分:1)
没有特别的原因可以定义GUI程序的工作目录。由于相对路径是相对于工作目录的,因此使用相对路径会产生一个定义明确且有意义的工作目录。
现在,您确实希望在与可执行文件相同的目录中查找文件。因此,正确的方法是找到可执行文件的完整路径,删除文件名,并附加文件名。现在您拥有该文件的完整路径。
作为一般规则,工作目录仅对控制台应用程序有意义。因此,只能在控制台应用程序中使用相对路径。