正如@MrEricSir指出的,最好将Qt资源系统与本机Qt类一起使用,以通过流读取文件。
但是,如果仍然需要将数据存储在单独的文件中,则可以简单地使用QCoreApplication::applicationDirPath()将可执行文件的路径返回并将其包装到您自己的函数中的方法,以尊重不同平台上的应用程序结构。
例如:
QString getResourcesPath()
{
#if defined(Q_OS_WIN)
return QApplication::applicationDirPath() + "/";
#elif defined(Q_OS_OSX)
return QApplication::applicationDirPath() + "/../Resources/";
#elif defined(Q_OS_LINUX)
return QApplication::applicationDirPath() + "/../share/yourapplication/";
#else
return QApplication::applicationDirPath() + "/";
#endif
}
Run Code Online (Sandbox Code Playgroud)
此示例代码假定:
Resources目录中.app。根据Apple开发人员文档,可执行文件存储在yourapplication.app/Contents/MacOS目录中,资源文件通常存储在目录中yourapplication.app/Contents/Resources。代码只是Resources相对于您的可执行文件移动到目录。bin和share目录。当然,您可以使用opt目录,也可以完全不捆绑应用程序-在这种情况下,Linux不需要任何条件包含。有关更多信息,请阅读有关Linux Filesystem Hierarchy Standard的信息。