我最近开始使用某种形式的声明性语言开展有关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"
}
]
}
]
}
有人可以构建一个简单的窗口,通过按下标有“Label_1”的按钮向用户显示该窗口。然后窗口可以标题为“Label_2” 并且有两个标记为“Field_A”和“Field_B”的字段接受整数和布尔值 价值分别。
其他人可以将此层次结构放在树列表中,例如
--------------------------------------------------------
>Label_1 |
>Label_2 |
>Field_A | 10
>Field_B | YES
我的第一个问题是,我是否必须构建某种形式的语言解析器才能实现这样的目标?我可以使用JSON吗?虽然我不需要支持复杂的层次结构,但是需要支持互斥的层次结构(类似于单选按钮启用/禁用选项)。我觉得它看起来像某种形式的语言解析与几个运算符。不要误解我,我是机械工程背景,我不是一个经验丰富的程序员。
提前感谢您的意见和帮助。
答案 0 :(得分:5)
JSON将是一个选择。 XML将是另一个 - 例如,Microsoft正是为了这个目的使用XAML(XML方言)而W3C有一个(相当新的)Widget packaging规范(使用另一种XML方言)。其中任何一个都可以让你使用现有的解析器,而不是从头开始构建另一个解析器。
答案 1 :(得分:4)
答案 2 :(得分:1)
我只是在基于Qt的C ++项目上测试真实用户界面环境的QML。 我认为它作为一种声明性语言非常强大,所以如果你已经了解了一些Qt基础知识,你可以使用它。
您可以非常快速地构建现代,专业和美观的用户界面。您还可以轻松地将声明性语言与C ++代码连接起来,反之亦然。