本地存储QML,获取Sqlite数据库位置

时间:2015-12-04 22:24:01

标签: c++ qt sqlite local-storage qml

首先抱歉这个非常基本的问题(我假设!)

我计划使用QtQuick.LocalStorage为本地数据库创建,读取和写入数据。

现在我想知道:

  • 使用using创建Sqlite数据库后,其位于何处 LocalStorage.openDatabaseSync()? (文件说我们可以利用 QQmlEngine :: offlineStoragePath()函数获取位置,但我是 不确定如何在QML中运行该功能:@)

  • 我可以指定要创建的数据库的路径吗?/ How?

提前谢谢。

1 个答案:

答案 0 :(得分:3)

在QML环境中无法自由访问该值,但可以从底层代码中导出该值 在C ++中的main函数中,您可能在某处QQmlApplicationEngine声明了类似的内容:

QQmlApplicationEngine engine;

您可以使用它来添加包含db位置的上下文属性,如下所示:

// ...
auto offlineStoragePath = QUrl::fromLocalFile(engine.offlineStoragePath());
engine.rootContext()->setContextProperty("offlineStoragePath", offlineStoragePath);
// ...

从现在开始,您可以简单地在QML环境中使用该值,将其称为offlineStoragePath。尝试将其Label属性设置为text

text: offlineStoragePath

请注意,成员offlineStoragePathQQmlEngine类的一部分,QQmlApplicationEngine派生于此类。 有关详细信息,请参阅documentation 如您所见,它还包含一个名为setOfflineStoragePath的成员(请参阅here),该成员可用于更改存储路径。