3 votes

Mise en œuvre du langage déclaratif de l'interface graphique

J'ai récemment commencé à travailler sur un projet concernant la construction d'une interface graphique utilisant une forme de langage déclaratif. Ce que je veux dire, c'est que j'ai besoin de décrire une hiérarchie d'objets, sans spécifier le type de widgets GUI qui seront utilisés pour "montrer" cette hiérarchie. Par exemple, pour une hiérarchie existante H en utilisant la notation JSON (ou quelque chose comme ça) :

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

                {
                    "title": "Field_B"
                    "type": "String"
                    "value": "YES"
                }
            ]
         }
    ]
}

Quelqu'un pourrait construire une fenêtre simple, qui serait montrée à l'utilisateur en appuyant sur un bouton intitulé "Label_1". La fenêtre pourrait alors s'intituler "Label_2" et comporter deux champs intitulés "Field_A" et "Field_B" acceptant des valeurs entières et booléennes. respectivement.

Quelqu'un d'autre pourrait placer cette hiérarchie sur une liste arborescente, par exemple

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

Ma première question est la suivante : dois-je construire une sorte d'analyseur de langage pour réaliser quelque chose comme cela ? Pourrais-je utiliser JSON ? Bien que je n'ai pas besoin de supporter des hiérarchies complexes, il est nécessaire de supporter des hiérarchies mutuellement exclusives (quelque chose comme des boutons radio activant/désactivant des options). J'ai l'impression que cela ressemble à une forme d'analyse de langage avec quelques opérateurs. Je suis ingénieur en mécanique et je ne suis pas un programmeur expérimenté.

Merci d'avance pour vos commentaires et votre aide.

6voto

Jerry Coffin Points 237758

JSON serait un choix possible. XML en serait un autre -- par exemple, Microsoft utilise XAML (un dialecte XML) exactement dans ce but et le W3C dispose d'un (relativement nouveau) Emballage des widgets (en utilisant un autre dialecte de XML). Chacun de ces éléments vous permettra d'utiliser les analyseurs existants au lieu d'en construire un autre à partir de zéro.

5voto

Evan Plaice Points 5677

Ce que vous recherchez s'appelle QML

Il s'agit du langage déclaratif d'interface graphique de Qt basé sur JSON.

Je me posais la même question et j'ai donc créé un site web. fil pour recueillir des informations sur les langages d'interface graphique déclaratifs Open Source. Si vous cherchez des alternatives, jetez-y un coup d'œil.

2voto

George Points 46

Je suis en train de tester QML pour un environnement d'interface utilisateur réel sur un projet C++ basé sur Qt. Et je pense qu'il est très puissant en tant que langage déclaratif, donc si vous connaissez déjà les bases de Qt, vous pouvez l'utiliser.

Vous pouvez créer très rapidement des interfaces utilisateur modernes, professionnelles et attrayantes. Vous pouvez également relier sans effort le langage déclaratif à votre code C++ et vice versa.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X