DtkCore
DTK Core module
载入中...
搜索中...
未找到
Dtk::Core::DSettings类 参考

DSettings是设计上为Dtk的应用程序提供统一的配置存储以及界面生成工具的基础库。 更多...

#include <dsettings.h>

类 Dtk::Core::DSettings 继承关系图:

Public 槽

void sync ()
 sync WARNING: sync will block
 
void setOption (const QString &key, const QVariant &value)
 设置键值
 
void reset ()
 重置键值
 

信号

void valueChanged (const QString &key, const QVariant &value)
 

Public 成员函数

 DSettings (QObject *parent=Q_NULLPTR)
 DSettings构造函数
 
void setBackend (DSettingsBackend *backend=nullptr)
 设置存储后端
 
QJsonObject meta () const
 返回JSON对象
 
QStringList keys () const
 返回全部键值
 
QList< QPointer< DSettingsOption > > options () const
 返回全部 key 的值
 
QPointer< DSettingsOptionoption (const QString &key) const
 获取 key 对应的值
 
QVariant value (const QString &key) const
 获取 key 对应的值
 
QStringList groupKeys () const
 返回子组全部键值
 
QList< QPointer< DSettingsGroup > > groups () const
 返回子组全部 key 的值
 
QPointer< DSettingsGroupgroup (const QString &key) const
 DSettings::group将递归找到子组
 
QVariant getOption (const QString &key) const
 获取 key 对应的值
 

静态 Public 成员函数

static QPointer< DSettingsfromJson (const QByteArray &json)
 从 json 中获取 DSettings,返回的数据使用之后需要自己手动释放。
 
static QPointer< DSettingsfromJsonFile (const QString &filepath)
 从 json 文件中获取 DSetting。
 

详细描述

DSettings是设计上为Dtk的应用程序提供统一的配置存储以及界面生成工具的基础库。

DSetting使用json作为应用配置程序的描述文件。简单来说,应用查询的配置分为组/键值二个基础层级, 对于一个标准的Dtk配置控件,一般只包含组/子组/键值三个层级,对于超过三个层级的键值,可以通过 DSettings的API接口进行读取和写入,但是不能在标准的DSettingsDialogs上显示出来。

一个简单的配置文件如下:

{
"groups": [{
"key": "base",
"name": "Basic settings",
"groups": [{
"key": "open_action",
"name": "Open Action",
"options": [{
"key": "alway_open_on_new",
"type": "checkbox",
"text": "Always Open On New Windows",
"default": true
},
{
"key": "open_file_action",
"name": "Open File:",
"type": "combobox",
"default": ""
}
]
},
{
"key": "new_tab_windows",
"name": "New Tab & Window",
"options": [{
"key": "new_window_path",
"name": "New Window Open:",
"type": "combobox",
"default": ""
},
{
"key": "new_tab_path",
"name": "New Tab Open:",
"type": "combobox",
"default": ""
}
]
}
]
}]
}

该组中包含一个base的root组,两个子组: open_action/new_tab_windows,每个子组有包含若干选项。 对于"New Window Open:"这个配置,其完整的访问id为base.new_tab_windows.new_window_path。

读取/设置其值的示例如下:

// 初始化一个存储后端
QTemporaryFile tmpFile;
tmpFile.open();
auto backend = new Dtk::Core::QSettingBackend(tmpFile.fileName());
// 从json中初始化配置
auto settings = Dtk::Core::DSettings::fromJsonFile(":/resources/data/dfm-settings.json");
settings->setBackend(backend);
// 读取配置
auto opt = settings->option("base.new_tab_windows.new_window_path");
qDebug() << opt->value();
// 修改配置
opt->setValue("Test")
qDebug() << opt->value();
static QPointer< DSettings > fromJsonFile(const QString &filepath)
从 json 文件中获取 DSetting。
QSetting后端,继承自DConfigBackend抽象接口,并实现了虚函数。
Definition qsettingbackend.h:16
参见
Dtk::Core::DSettingsOption
Dtk::Core::DSettingsGroup
Dtk::Core::DSettingsBackend
Dtk::Widget::DSettingsWidgetFactory
Dtk::Widget::DSettingsDialog

成员函数说明

◆ group()

QPointer< DSettingsGroup > Dtk::Core::DSettings::group ( const QString &  key) const

DSettings::group将递归找到子组

返回

◆ sync

void Dtk::Core::DSettings::sync ( )
slot

sync WARNING: sync will block

开始进行同步


该类的文档由以下文件生成: