QML 中使用 Settings 可以保存一些简单的信息,例如用户名,密码,窗口位置,大小等,没有Sqlite那么麻烦,简单易用哦~~~ (环境:Qt5.8 for android ,Windows 7)
main.qml
import QtQuick 2.7
import QtQuick.Window 2.2
import Qt.labs.settings 1.0
Window {
id: window
width: 800
height: 600
visible: true
Settings {
property alias x: window.x
property alias y: window.y
property alias width: window.width
property alias height: window.height
}
}
Settings 保存了窗口的大小和位置信息,在第一次启动的时候是默认的,第二次启动就是上次保存好的,这里的属性绑定自动完成,因为这个 alias !
在 main 里面还要定义这个程序的Setting 位置,不同得程序可以设置不同的Setting保存位置哦~~~
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
app.setOrganizationName("Some Company"); //1
app.setOrganizationDomain("somecompany.com"); //2
app.setApplicationName("Amazing Application"); //3
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
} 上面的 1,2,3 告知程序Settings的具体位置,确保程序能够读到,否则,Settings 不生效!! 有些时候: int main(int argc, char *argv[]){QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);QGuiApplication app(argc, argv);QCoreApplication::setOrganizationName("Zongmu");QCoreApplication::setOrganizationDomain("zongmutech1.com");QCoreApplication::setApplicationName("Vp Car");qmlRegisterType<ImageSaver>("Zongmu.ImageSaver", 1, 0, "ImageSaver");qmlRegisterType<ZmMapView>("ZmMapView", 1, 0, "MapView");qmlRegisterType<QML_POI>("ZmMapView", 1, 0, "POI");QQmlApplicationEngine engine;engine.rootContext()->setContextProperty("applicationDirPath", QGuiApplication::applicationDirPath());engine.load(QUrl(QLatin1String("qrc:/main.qml")));if (engine.rootObjects().isEmpty())return -1;return app.exec();}
这种写法是必要的 不知道为什么