C++ QML QSettings和QML-无法保存/加载设置
我做错了什么?我总是在调试控制台中出现“错误!无法加载数据”。有人能指出错误吗?也许我创造了糟糕的“设置”?这是许可程序的问题C++ QML QSettings和QML-无法保存/加载设置,c++,qt4,qml,qt5,C++,Qt4,Qml,Qt5,我做错了什么?我总是在调试控制台中出现“错误!无法加载数据”。有人能指出错误吗?也许我创造了糟糕的“设置”?这是许可程序的问题 //main.cpp #include <QtGui/QGuiApplication> #include "qtquick2applicationviewer.h" #include <QQmlContext> #include <QSettings> #include "settings.h
//main.cpp
#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include <QQmlContext>
#include <QSettings>
#include "settings.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QtQuick2ApplicationViewer viewer;
viewer.setMainQmlFile(QStringLiteral("qml/kon/main.qml"));
Settings* settings = new Settings();
viewer.rootContext()->setContextProperty("settings", settings);
viewer.showExpanded();
return app.exec();
}
在QML中,我使用这样的类:
Button
{
id:button1
nazwa: "Set value"
onClicked: settings.setValue("1","adskmmads")
}
Button
{
id:button2
onClicked: console.log(settings.value("1","error! cannot load data"))
nazwa: "Load value and show"
}
QSettings
constructor至少需要2个字符串organization
name和应用程序name
QSettings::QSettings(const QString & organization, const QString & application = QString(), QObject * parent = 0);
在您的情况下,只需在main()
(1) 如果在应用程序中的许多位置使用QSettings
,则可能需要使用QCoreApplication::setOrganizationName()
和QCoreApplication::setApplicationName()
指定组织名称和应用程序名称,然后使用默认值QSettings
构造函数:
QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("mysoft.com");
QCoreApplication::setApplicationName("Star Runner");
...
QSettings settings; //default constructor
(1) 参考:
QSettings::QSettings(const QString & organization, const QString & application = QString(), QObject * parent = 0);
QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("mysoft.com");
QCoreApplication::setApplicationName("Star Runner");
...
QSettings settings; //default constructor