J'essaie de créer un formulaire standard à deux colonnes, où la première colonne est une étiquette de texte ( Comment puis-je utiliser des boîtes de groupe et des mises en page d'une manière telle que le merci! p> qlabel code>) et la deuxième colonne est un widget interactif, typiquement un champ de texte (
QLineDit code>). Nous avons décidé de placer des lignes de format qui partagent un thème commun à l'intérieur d'un
qgroupbox code>, et donc dans une mise en page distincte que la disposition principale. Ainsi, les éléments de forme à l'intérieur de chaque
qgroupbox code> n'alignent pas horizontalement avec les éléments de formulaire en dehors du
qgroupbox code> es. P>
qlabel code> s et
s QLineDIT code> s à la fois à l'intérieur et à l'extérieur Les boîtes de groupe sont (horizontalement) alignées les unes avec les autres ? p>
4 Réponses :
Je ne pense pas que cela fonctionnera avec des ensembles de mises en page horizontale et verticale imbriquée. Avez-vous envisagé un QGriDlayout ? P>
J'ai besoin d'éléments de forme dans différentes boîtes de groupe, alors malheureusement, je vais avoir besoin de mises en page différentes / imbriquées. J'utilise déjà qgridlayout code>, en fait!
Utilisez la séchée () pour forcer toutes vos colonnes à la même largeur p>
Cela ne serait-il pas une politique de mise en page?
Vous pouvez définir la propriété minimumWidth sur toutes les étiquettes à l'intérieur des boîtes de groupe sur quelque chose qui est juste assez large pour afficher l'étiquette la plus large. Cela obtiendra toutes les étiquettes dans les différentes boîtes de groupe alignées. P>
Maintenant, pour obtenir les étiquettes à l'extérieur des boîtes groupées alignées sur celles de l'intérieur: je suppose d'abord que chaque paire d'étiquettes / ligneDedit est dans sa propre présentation horizontale ou que vous avez plusieurs rangées à l'intérieur d'une grille. Dans les deux cas, ce que vous pouvez faire est de définir le minimumWidth des étiquettes sur la même valeur que les étiquettes des groupes de groupe. Enfin, ajustez les propriétés de layoutleftmargin, de layouTrightMargin et de la mise en page sur la disposition horizontale (ou de la grille) jusqu'à ce que les bords droit et gauche de la paire d'étiquettes / ligne alignez avec celles à l'intérieur des boîtes de groupe. P>
Si vous n'utilisez pas déjà l'éditeur de formulaire dans Qt Creator, ou Qt Designer, pour construire votre interface utilisateur, j'ai trouvé cela pour rendre cette tâche assez facile. P>
Je dois admettre que cela ressemble un peu de kludgey, mais dans le cas de test simple, j'ai construit, cela semblait travailler d'accord. D'autre part, cela semble susceptible de casser si l'utilisateur modifie la taille de la police. Peut-être qu'il y a une meilleure façon? P>
J'espère que cela aide. P>
Je vais donner cela un coup de feu - je vous ferai savoir comment ça se passe.
Je n'ai pas essayé le deuxième composant, mais je peux vous dire que la définition de la largeur minimale des étiquettes dans les boîtes de groupe de niveau supérieur a fonctionné comme par magie. Voir ma propre réponse pour pseudocode.
Kenrogers a fourni la solution et voici un code incomplet que j'ai utilisé pour le faire fonctionner: