2009-10-03 3 views
2

J'ai travaillé sur une interface graphique simple et j'ai atteint un barrage routier. Je n'ai trouvé aucun exemple ou même source lisible sur la façon de créer un gestionnaire de disposition graphique. Je me demandais si quelqu'un connaissait certaines ressources sur la création d'un, ou un code source qui n'est pas cryptique comme le moteur de mise en page de Qt.Ressources sur la création d'un gestionnaire de mise en page GUI?

+0

Quelle plate-forme êtes-vous et quelle bibliothèque utilisez-vous pour créer vos interfaces graphiques? – StackedCrooked

+0

J'essaye d'écrire le mien juste pour l'enfer. – beta

Répondre

4

Cela dépend de ce que vous entendez par "gestionnaire de disposition", et je ne connais pas Qt, donc cela ne me donne pas grand-chose.

Si vous voulez dire des choses comme la gestion des fenêtres redimensionnable, je pense que le terme pertinent est "solveur de contraintes". Je ne l'ai jamais beaucoup étudié, mais je crois que les solveurs de contraintes GUI sont basés sur linear programming - le Simplex algorithm et tout ça. Il pourrait être possible de faire quelque chose avec Gaussian Elimination, mais je suis loin d'être confiant à ce sujet.

Basé sur une recherche rapide de "programmation graphique gui layout", vous pouvez trouver this paper de CiteSeerX intéressant - il y a un téléchargement de PDF. Si vous n'aimez pas le cryptique, eh bien, en un coup d'œil, ce n'est pas vraiment lourd en mathématiques, mais je suppose que ce n'est pas non plus une lecture légère. Je suppose que je le saurai bientôt, car tu m'as intéressé.

+0

C'est ce que je cherche! Désolé pour l'utilisation incorrecte de la terminologie, car c'est un territoire inexploré pour moi. Merci. – beta

+0

+1 pour le lien vers le document. Tous ces types de papier sont souvent derrière des murs de paiement. –

+0

@ graham.reeds: citeseer est un excellent site pour trouver des articles, sinon non disponible gratuitement. Je l'ai beaucoup utilisé quand je travaillais sur mon master. –

2

Je suis actuellement en train de créer un port Windows pour Mozilla XUL. Mon approche n'implique pas de techniques de programmation linéaire comme celles de Steve, mais c'est une approche plus orientée objet. Il est basé sur les modèles de conception Composite et Decorator. Le motif composite vous permet de créer des contrôles qui ont des contrôles enfants, qui à leur tour peuvent avoir leurs propres enfants. Un contrôle est responsable du positionnement de ses contrôles enfants dans son rectangle client désigné. Par exemple, supposons que vous souhaitiez implémenter une disposition qui positionne ses contrôles enfants horizontalement. L'algorithme de disposition doit ensuite calculer la largeur de chaque contrôle enfant afin de calculer les offsets x pour chaque contrôle enfant.

Le calcul de la largeur d'un conteneur est effectué en retournant la somme des largeurs des contrôles enfants.

Les classes Decorator peuvent être utilisées pour ajouter des propriétés supplémentaires. Par exemple, un MarginDecorator peut ajouter un espacement entre les contrôles enfants, un ScrollDecorator peut faire défiler les barres, etc ...

C'est une chose amusante à faire, je vous souhaite bonne chance!

Questions connexes