GUI声明性语言实现

GiF*_*Fou 3 c++ user-interface declarative

我最近开始使用某种形式的声明性语言开发一个关于GUI构建的项目.我的意思是我需要描述对象的层次结构,而不指定将用于"显示"该层次结构的GUI小部件的类型.例如,对于某些现有层次结构H,使用JSON表示法(或类似的东西):

H = 
{
    "title" : "Label_1"
    "children" : 
    [
        {
            "title" : "Label_2"
            "children": 
            [
                {
                    "title": "Field_A"
                    "type": "Integer"
                    "value": 10
                },

                {
                    "title": "Field_B"
                    "type": "String"
                    "value": "YES"
                }
            ]
         }
    ]
}
Run Code Online (Sandbox Code Playgroud)

有人可以构建一个简单的窗口,通过按下标有"Label_1"的按钮向用户显示.然后该窗口可以标题为"Label_2",并且具有标记为"Field_A"和"Field_B"的两个字段,分别接受整数和布尔值.

其他人可以将此层次结构放在树列表中,例如

--------------------------------------------------------
>Label_1                |
    >Label_2            |
        >Field_A        |   10
        >Field_B        |   YES
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是,我是否必须构建某种形式的语言解析器来实现这样的目标?我可以使用JSON吗?虽然我不需要支持复杂的层次结构,但是需要支持互斥的层次结构(类似于单选按钮启用/禁用选项).我觉得它看起来像某种形式的语言解析与几个运算符.不要误解我,我是机械工程背景,我不是一个经验丰富的程序员.

提前感谢您的意见和帮助.

Jer*_*fin 6

JSON将是一个选择.XML将是另一种 - 例如,Microsoft 正是为了这个目的使用XAML(一种XML方言)而W3C有一个(相当新的)Widget包装规范(使用另一种XML方言).其中任何一个都可以让你使用现有的解析器,而不是从头开始构建另一个解析器.


Eva*_*ice 5

你正在寻找的东西叫做 QML

它是 Qt 的基于 JSON 的 GUI 声明性语言。

我想知道同样的事情,所以我开始了一个线程来收集有关开源、声明性 GUI 语言的信息。如果您正在寻找替代方案,请查看。