我是qt移动开发的新手,我有一个很愚蠢的问题。 我将如何检查用户是否首次运行该应用程序(Android和iOS)?
编辑:
我需要进行此检查的原因是,我有一个初学者介绍SwipeView,并且在阅读后应该始终打开主应用程序屏幕。
我已经尝试过@TrebledJ提出的建议,但似乎工作正常,还是在main.cpp中这样做很愚蠢?
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QSettings>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QSettings settings;
QVariant firstRun = settings.value("first-run");
QQmlApplicationEngine engine;
QUrl startingScreen(QStringLiteral("qrc:/main.qml"));
if(!firstRun.isValid())
settings.setValue("first-run", true);
else
startingScreen.setUrl(QStringLiteral("qrc:/start.qml"));
engine.load(startingScreen);
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
答案 0 :(得分:1)
使用QSettings
检查设置值。
QSettings settings;
QVariant val = settings.value("first-time");
if (!val.isValid()) {
// ... first run
settings.setValue("first-time", false); // set a value so that the value is valid on the next run
} else {
// ... not first run
}
在QML中,有Settings
QML类型。
import Qt.labs.settings 1.0
Settings {
id: settings
property bool isFirstTime: true
}
Component.onCompleted: {
if (settings.isFirstTime) {
// ... first run
settings.isFirstTime = false;
} else {
// ... not first run
}
}
但是,根据文档:
注意:通过导入 Qt.labs.settings 模块可以使用此类型。 Qt.labs模块中的类型不能保证在将来的版本中保持兼容。
考虑到非保证,Felgo / V-Play的API具有Storage
QML类型,该类型也可以在QML中执行检查。 (他们文档中的第一个示例实现了这一点。)