DSettings 工具
DSettings 工具
# DSettings 类
# 作用
DSettings是设计上为Dtk的应用程序提供统一的配置存储以及界面生成工具的基础库。DSetting使用json作为应用配置程序的描述文件。简单来说,应用查询的配置分为组/键值二个基础层级,对于一个标准的Dtk配置控件,一般只包含组/子组/键值三个层级,对于超过三个层级的键值,可以通过DSettings的API接口进行读取和写入,但是不能在标准的DSettingsDialogs上显示出来。
# 例子
一个简单的 json 配置文件如下:
{
"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。读取/设置其值的 c++ 示例如下:
// 初始化一个存储后端
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(backen
// 读取配置
auto opt = settings->option("base.new_tab_windows.new_window_path");
qDebug() << opt->value
// 修改配置
opt->setValue("Test")
qDebug() << opt->value();
# DSettings 相关类
Dtk::Core::DSettingsOption
DSettingsOption
是DSettings
的基本单元,用于存放一对键-值数据。Dtk::Core::DSettingsGroup
一组
DSettings
选项的集合,也可以包含子组。Dtk::Core::Core::DSettingsBackend
DSettingsBackend
是一个纯虚类, 用来描述DSettings的存储接口。Dtk::Widget::DSettingsWidgetFactory
DSettingsWidgetFactory
是一个用于构造UOS风格的设置对话框的控件。对于每种控件,均由一个id和对应的构造函数来组成,DSettingsWidgetFactory
内置了许多基础的控件,包括:checkbox/lineedit/combobox/spinbutton/buttongroup/radiogroup/slider
等。Dtk::Widget::DSettingsDialog
为使用
DSettings
的Dtk
程序提供一个通用的设置对话框,这个对话框可以通过json
配置文件来自动生成。
帮助编辑此页 (opens new window)
上次更新: 12/17/2020, 2:23:36 AM