3

私は最近、何らかの形式の宣言型言語を使用した 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」というラベルの付いた 2 つのフィールドを持ち、それぞれ整数値とブール値を受け入れることができます。

他の誰かが、この階層をツリー リストに入れることができます。

--------------------------------------------------------
>Label_1                |
    >Label_2            |
        >Field_A        |   10
        >Field_B        |   YES

私の最初の質問は、まあ、このようなことを達成するために何らかの形の言語パーサーを構築する必要がありますか? JSONを使用できますか?複雑な階層をサポートする必要はありませんが、相互に排他的な階層 (オプションを有効/無効にするラジオ ボタンのようなもの) をサポートする必要があります。いくつかの演算子を使用した何らかの形の言語解析のように見える気がします。誤解しないでください。私は機械工学のバックグラウンドを持っており、経験豊富なプログラマーではありません。

コメントとヘルプをお寄せいただきありがとうございます。

4

3 に答える 3

6

JSON が 1 つの選択肢になります。XML は別のものです。たとえば、Microsoft はまさにこの目的のためにXAML (XML 方言) を使用し、W3C には (かなり新しい)ウィジェット パッケージ仕様 (XML の別の方言を使用) があります。これらのいずれでも、ゼロから別のパーサーを構築する代わりに、既存のパーサーを使用できます。

于 2010-02-27T18:19:56.947 に答える
5

あなたが探しているのはQMLと呼ばれています

JSON に基づく Qt の GUI 宣言型言語です。

私も同じことを考えていたので、オープン ソースの宣言型 GUI 言語に関する情報を収集するスレッドを開始しました。代替品を探している場合は、チェックしてください。

于 2010-06-03T19:56:52.170 に答える
2

Qt に基づく C++ プロジェクトで実際のユーザー インターフェイス環境の QML をテストしています。また、宣言型言語として非常に強力だと思うので、Qt の基礎をある程度知っていれば使用できます。

モダンでプロフェッショナルで見栄えの良いユーザー インターフェイスを非常に高速に構築できます。また、宣言型言語と C++ コードを簡単に接続することも、その逆も可能です。

于 2010-07-15T07:29:22.680 に答える