Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

ConfigWidget Class

class Visindigo::Widgets::ConfigWidget

此类从CWJson创建配置窗口。. 详情...

头文件: #include <ConfigWidget>
自以下版本: Yayin Story Studio 0.13.0

公开成员函数

(自 Yayin Story Studio 0.13.0 引入) ConfigWidget(QWidget *parent = nullptr)
(自 Yayin Story Studio 0.13.0 引入) virtual ~ConfigWidget()
(自 Yayin Story Studio 0.13.0 引入) void loadCWJson(const QString &json)

详细说明

此类提供一种便捷的配置文件操作窗口创建方式,使用一种被约定为“CWJSON”的Json格式来描述配置窗口的内容。并且 允许窗口和一个配置文件相绑定,将结果同步到配置文件中。

CWJson的顶层格式如下:

{
        "target": "$(ProgramPath)/resource/test_config.json",
        "targetType": "json",
        "widget":[]
}

其中,target为目标配置文件的路径,targetType为目标配置文件的类型,widget为窗口的内容。

Note: 当前,targetType仅支持json格式,目前有支持YAML的计划,但具体实现时间未定。

对于widget来说,其基本格式如下,我们以一个ComboBox类型的配置为例:

{
        "node": "Theme",
        "type": "ComboBox",
        "icon": "",
        "title": "i18n:YSS::config.theme.title",
        "text": "i18n:YSS::config.theme.text",
        "data": {
                "comboBox": [
                        {
                                "data": "theme_dark",
                                "key": "i18n:YSS::config.theme.dark"
                        },
                        {
                                "data": "theme_light",
                                "key": "i18n:YSS::config.theme.light"
                        }
                ],
                "default": "theme_dark"
        },
        "children": []
}

其中,node是要绑定到的配置项节点,子一级节点会自动继承父一级节点的名称。 type是要创建的控件类型,icon是控件的图标,title是控件的标题,text是控件的描述。 data是控件的具体数据,children是控件的子控件。

对于type,当前支持的类型为ComboBoxRadioButton、Frame和LineEdit。其中Frame是 专门用来作为容器的控件,没有输入功能。

title和text支持YSS翻译系统,当其以“i18n:”开头时,会自动进行翻译,具体参见 Visindigo::General::TranslationHost

不同的控件类型有不同的data格式,ComboBox的格式已经在上面给出,RadioButton的格式如下:

"data": {
        "default": true
}

即只提供默认是否选中即可。而LineEdit的格式如下:

"data": {
        "default": "test"
        "check": {
                "min": 1,
                "max": 10,
                "regex": "^[a-zA-Z0-9]+$"
        }
}

其中,check为检查项,min和max为最小和最大长度,regex为正则表达式。

Note: 目前,LineEdit的检查项仅支持最小和最大长度,正则表达式的检查项未实现。

成员函数文档

[since Yayin Story Studio 0.13.0] ConfigWidget::ConfigWidget(QWidget *parent = nullptr)

parent 父窗口 类的构造函数

这个 function 从 Yayin Story Studio 0.13.0 开始支持。

[virtual noexcept, since Yayin Story Studio 0.13.0] ConfigWidget::~ConfigWidget()

析构函数

这个 function 从 Yayin Story Studio 0.13.0 开始支持。

[since Yayin Story Studio 0.13.0] void ConfigWidget::loadCWJson(const QString &json)

json 为CWJson的内容 加载CWJson

这个 function 从 Yayin Story Studio 0.13.0 开始支持。