2010-02-27 101 views
3

我最近開始使用某種形式的聲明性語言開始有關GUI構建的項目。我的意思是我需要描述對象的層次結構,而不指定將用於「顯示」該層次結構的GUI小部件的類型。例如,對於一些現有的層次結構ħ,使用JSON符號(或類似的東西):GUI聲明式語言實現

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」的字段分別接受整數和布爾值 值。

別人,可以把一個目錄樹在這個層次,e.g

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

我的第一個問題是,好了,我一定要建立某種形式的語言分析器來實現這樣的事情?我可以使用JSON嗎?雖然我不需要支持複雜的層次結構,但需要支持互斥的層次結構(如單選按鈕啓用/禁用選項)。我有這樣的感覺,它看起來像一些形式的語言解析與幾個運營商。不要誤會我的意思,我是機械工程背景的人,我不是一個有經驗的程序員。

非常感謝您的意見和幫助。

回答

5

JSON將是一種選擇。 XML將是另一個 - 例如,微軟使用XAML(一種XML方言)來達到這個目的,而W3C有一個(相當新的)Widget packaging規範(使用另一種XML方言)。其中任何一項都可以讓您使用現有的解析器,而不是從頭開始構建另一個解析器。

+0

所以,我想我正朝着正確的方向前進。謝謝。 – GiFou 2010-02-27 20:45:17

+0

嘿,如果是關於聲明性/ C++/ui爲什麼沒有「http://labs.trolltech.com/blogs/2009/05/13/qt-declarative-ui/」出現在任何人的腦海中? – mlvljr 2010-02-28 08:01:54

+0

* amn that closing'''!那麼http://qt.nokia.com/doc/qml-snapshot/declarativeui.html? – mlvljr 2010-02-28 14:59:11

4

你在找什麼叫QML

基於JSON它的Qt的圖形用戶界面聲明語言。

我想知道同樣的事情,所以我開始收集關於開放源代碼,聲明性GUI語言的信息thread。如果您正在尋找替代品,請查看。

1

我只是在基於Qt的C++項目上測試真正的用戶界面環境的QML。 我認爲它作爲一種聲明性語言非常強大,所以如果你已經知道一些Qt基礎知識,你可以使用它。

您可以非常快速地構建現代,專業和美觀的用戶界面。而且您還可以輕鬆地將聲明性語言與您的C++代碼連接起來,反之亦然。