如何从ios上的Qt访问资产文件夹

时间:2014-04-14 18:42:54

标签: ios qt qml assets

我正在使用Qt / QML编写跨平台移动应用程序。该应用程序与一个小的sqlite数据库一起安装,该数据库在开始时从资产复制到应用程序数据位置,应该由应用程序访问。为此,我有DatabaseManager类。它包含为不同平台上的资产提供路径的功能:

QString DatabaseManager::assetsPath()
{
    QString assetsPath;
#ifdef Q_OS_WIN
    assetsPath = QDir::toNativeSeparators("assets:/../database");
#endif

#ifdef Q_OS_ANDROID
    assetsPath = QDir::toNativeSeparators("assets:/database");
#endif

#ifdef Q_OS_IOS
    assetsPath = QDir::toNativeSeparators("assets:/database");
#endif

#ifdef Q_OS_MAC
    assetsPath = QDir::toNativeSeparators("assets:/database");
#endif

    return assetsPath;

}

使用以下代码部署在.pro文件中的资产:

folder_qml.source = qml/HookahMixes
folder_qml.target = qml

folder_db.source = database
folder_db.target = .

DEPLOYMENTFOLDERS = folder_qml folder_db

问题是“assets:/”前缀在Windows和Android上运行良好,但不适用于ios和Mac OS。 所以问题是:我应该使用哪种资产路径在这些平台上查找数据库? 感谢。

1 个答案:

答案 0 :(得分:0)

好的,所以是时候回答自己的问题了。 我使用的方法不正确,问题可以更容易解决:

Qt生成QtQuick2ApplicationViewer类来处理主qml加载。在这个课程中你可以找到一个私人函数" adjustPath()"。此功能正是我们所需要的 - 将本地路径映射到资源到全局平台相关路径。为了使用该功能,我将其公开显示并以形式使用它:

QString DatabaseManager::assetsPath()
{
    return m_Viewer.adjustPath("database");
}

多数民众赞成。