我有一个Qt程序,里面有一些.txt文件。一开始我只是从我制作的某个目录中读取它们,但时机已到,并且有必要为Mac OSX创建一个包。在cmake的帮助下,我设法将.txt文件放在/ bundle的.app目录下,但是我没有找到如何从那里读取它们。
如何阅读这些文件,以便我可以从任何地方运行该应用程序?
答案 0 :(得分:5)
正如@MrEricSir所指出的,最好使用Qt resource system和本地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
}
此示例代码假定:
Resources
捆绑包的.app
目录中。根据{{3}},可执行文件存储在yourapplication.app/Contents/MacOS
目录中,资源文件通常存储在yourapplication.app/Contents/Resources
中。代码只是相对于您的可执行文件传到Resources
目录。bin
和share
目录。当然,您可以使用opt
目录或根本不捆绑您的应用程序 - 在这种情况下,您不需要任何针对Linux的条件包含。有关Linux Apple developer docs。