Question

Je suis maintenant dans l’idée de démarrer le développement d’un framework de base, semblable à Qt / GTK +, mais je veux savoir certaines choses avant de commencer la création de ce projet:

  • Quelle est la structure de GTK + et Qt?
  • Dois-je développer un gestionnaire de fenêtres pour créer mon propre framework?
  • Quelques ressources pour commencer?
Était-ce utile?

La solution

Cela ressemble à une entreprise majeure, du moins en tant que projet de départ.

Vous ne savez pas exactement ce que vous entendez par "structure"? par exemple GTK +. Vous pouvez voir la hiérarchie d'objets pour GTK +, qui indique au moins comment les objets implémentés (GTK + est une API orientée objet) sont liés les uns aux autres. Vous pouvez deviner comment le code peut être structuré à partir de ces informations.

Et non, vous n'avez pas besoin d'écrire votre propre gestionnaire de fenêtres; les boîtes à outils concernent principalement ce qui se passe dans les fenêtres , pas avec la gestion des fenêtres elle-même. Bien entendu, vous pouvez décider que votre " plate-forme " devrait avoir une portée plus large et inclure un WM.

Autres conseils

Le développement d’un GUI / framework d’application est une entreprise importante. Vous voudrez peut-être très bien comprendre pourquoi vous devez encore écrire un autre framework.

Les deux projets que vous mentionnez sont open source. Pourquoi ne pas commencer par là?

  1. GTK: clone de git git: //git.gnome.org/gtk+
  2. Qt: clone git git: //gitorious.org/qt/qt.git

Ed Vous demandez quelle est la structure de GTK et de Qt, si vous devez écrire votre propre gestionnaire de veuve (réponse: non) et comment commencer. Les réponses aux deux premières au moins sont dans le code source. N'oubliez pas que les grands praticiens de tous les domaines apprennent en observant les autres. La lecture du code n'est pas différente.

Écrire un framework d’interface graphique / d’applications serait une excellente expérience d’apprentissage, mais même un cadre d’applications assez petit représenterait un très gros travail, et vous ne devriez pas l’attendre tant que vous n’êtes pas assez expert en rédaction d’applications utilisant plusieurs autres et des kits d’outils pour les widgets.

J'ai fait quelque chose comme ça une fois, au début de cette décennie. C’était après avoir programmé pour le Mac pendant plus de 15 ans, Windows pour plus de 10 ans, et pour avoir programmé directement les API graphiques, les événements et les widgets natifs, ainsi que divers kits d’outils orientés objet pour eux, notamment PowerPlant, MFC. et MacApp. Lorsque j'ai commencé à travailler sur une application PalmOS, j'ai passé quelques semaines à écrire un très petit framework d'applications modélisé sur PowerPlant. Mais je n’aurais pas pu réussir du tout sans ces décennies d’expérience riche et approfondie avec autant de systèmes d’interface graphique.

Faire ceci pour Linux / X11, c'est encore plus de travail. En effet, contrairement à Mac OS et Windows, ni X11 ni Linux ne fournissent de widgets d’interface utilisateur intégrés, ni beaucoup de fonctionnalités de primitives graphiques ou de fonctionnalités de présentation de texte. GTK + fait partie de l'écosystème GNOME; il fournit les widgets, obtient sa file de messages et les communications internes de GObject, s'appuie sur GDK pour résumer et simplifier ses communications graphiques et d'événements avec X11, et utilise Pango et Cairo pour le rendu et la mise en page du texte. Je travaille tout au long de ce système, et cela représente probablement plusieurs dizaines d'années-personnes de dur labeur pour un grand nombre de personnes très intelligentes. Et je suis sûr que Qt est très similaire.

Donc si vous voulez vraiment faire cela, je vous recommanderais:

  1. Ecrivez des programmes contenant un lot de boîtes à outils d'applications et de widgets différents, sur plusieurs systèmes d'exploitation. Cela vous aidera à apprendre non seulement comment ces systèmes fonctionnent, mais aussi à pourquoi ils sont conçus comme ils sont. Et cela vous donnera une idée de ce qui fonctionne bien et de ce qui fonctionne mal.
  2. Contribute corrige un bogue ou de nouvelles fonctionnalités dans un ou plusieurs des différents frameworks open-source. GTK + contient une liste des tâches à exécuter par les débutants . wxWidgets est un autre excellent cadre open-source.
  3. Devenez un programmeur C / C ++ de niveau expert.

Quand vous aurez fait cela pendant quelques années, vous aurez l'expertise nécessaire pour vous attaquer à votre propre cadre.

Je pense que certaines des réponses ici pourraient exagérer un peu. De toute évidence, fabriquer quelque chose de la même qualité, largeur et profondeur que Qt et Gtk est une énorme perte de temps. Mais vous pouvez faire des choses plus simples et en apprendre beaucoup sur son fonctionnement. Je suggère de faire comme à l'université. Utilisez OpenGL avec Glut. Ensuite, vous avez déjà une fonctionnalité de dessin de base et un système d’événements. Vous devez ensuite créer des classes pour les boutons, les champs de texte, etc.

Si vous voulez simplifier les choses, chaque composant doit simplement savoir où il est dessiné et disposer d’une sorte de cadre de sélection dans lequel vous pouvez vérifier si le clic de souris est à l’intérieur ou non. Vous devez également créer un système permettant aux boutons, aux cases à cocher, etc., d'indiquer au reste de votre code qu'ils ont été cliqués.

Ce n’est pas vraiment ce que les spécialistes des sciences de la fusée font ici. Les jeux ont fait leurs propres toolkits GUI très simples pour des années. Vous pouvez aussi essayer cette approche. J'ai déjà modélisé une interface graphique simple prise au-dessus d'un moteur de jeu auparavant. Vos boutons et votre champ de texte pourraient être simplement des sprites.

Mais oui, si vous voulez faire quelque chose qui rivalisera avec Gtk + et Qt, oubliez ça. C’est un effort collectif de plusieurs années.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top