我正在尝试为我的QML应用程序设置LocalStorage
位置(sqlite db),但是一旦我重建并运行应用程序,我仍然看不到子文件夹,INI文件和创建的sqlite数据库所需位置(在资源文件夹中的子文件夹中)。以下是主要文件中的内容
感谢任何人可能会在这里搞错我的错误吗?
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QString>
#include <QDebug>
#include <QDir>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
//engine.setOfflineStoragePath("qrc:/");
auto offlineStoragePath = QUrl::fromLocalFile(engine.offlineStoragePath());
engine.rootContext()->setContextProperty("offlineStoragePath", offlineStoragePath);
QString customPath = "qrc:/OffLineStorage";
QDir dir;
if(dir.mkpath(QString(customPath))){
qDebug() << "Default path >> "+engine.offlineStoragePath();
engine.setOfflineStoragePath(QString(customPath));
qDebug() << "New path >> "+engine.offlineStoragePath();
}
return app.exec();
}
答案 0 :(得分:0)
通过查看问题中的代码段,一切看起来都很好
无论如何,您应该验证以下行是否实际上按预期返回true
:
dir.mkpath(QString(customPath)
如果不是,则if
语句的主体在任何情况下都不会被执行,因此永远不会调用setOfflineStoragePath
。
作为提示,使用qrc:/OffLineStorage
作为存储路径似乎不是一个好主意。我不确定它会在生产环境中工作一次(要检查,听起来很奇怪,但它可以工作)。
答案 1 :(得分:0)
尝试在engine.setOfflineStoragePath
之前使用engine.load
。
使用qrc:/ OffLineStorage作为存储路径似乎没有 是个好主意。我不确定它将在生产中一次使用 环境
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QString>
#include <QDebug>
#include <QDir>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
QString customPath = "qrc:/OffLineStorage";
QDir dir;
if(dir.mkpath(QString(customPath))){
qDebug() << "Default path >> "+engine.offlineStoragePath();
engine.setOfflineStoragePath(QString(customPath));
qDebug() << "New path >> "+engine.offlineStoragePath();
}
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
engine.clearComponentCache();
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}