Question

Pour ceux d'entre vous qui ne l'ont pas lu mes questoins Qt, je suis d'apprentissage Qt pour un projet. Je n'ai qu'une expérience limitée avec la conception graphique du tout, et non pas dans Qt.

J'ai une disposition horizontale que je veux remplir avec quelques boutons. Je peux nourrir ces boutons très bien, mais mes boutons autrefois carrés sont étirés horizontalement pour plus d'espace.

Je veux que le gestionnaire de mise en page de déterminer la meilleure façon de la taille de ces boutons, mais je veux aussi leurs proportions originales restent intactes. Par exemple, si je commence avec des boutons serait 32X32 qui doivent réduire pour tenir tous dans la mise en page, je veux qu'ils rétrécissent proportionnellement afin que la largeur à l'échelle de la hauteur est maintenue. 20X20, 16X16, 12X12 tout serait très bien, mais 24x16 serait un exemple de dimensions qui sont inacceptables.

Je l'ai bricolé avec les politiques de taille sur les boutons et des options extensibles. Je ne vois pas, même après avoir lu les classes QPushButton et QHBoxLayout comment faire cela. Comment est-il accompli?

Merci.

Était-ce utile?

La solution

Tant que je comprends bien la question, je pense que ce que vous voulez est QBoxLayout::addStretch(). Cela va ajouter un objet entretoise qui remplit l'espace inutilisé. Ainsi, les boutons auront leur taille idéale et l'entretoise rempliront le reste. Vous pouvez essayer d'expérimenter avec cela dans Designer, il est plus facile que l'écriture / compilation / du cycle d'exécution.

Autres conseils

Vous devriez jeter un oeil aux réponses cette question. Ceci est un résumé de ma réponse là-bas.

Vous devez créer un dérivé personnalisé de QLayoutItem, qui remplace bool hasHeightForWidth() et int heightForWidth( int width ) pour préserver le ratio d'aspect. Vous pouvez soit passer le bouton et l'interroger, ou vous pouvez simplement régler directement le rapport. Vous devez également vous assurer que la fonction widget () renvoie un pointeur sur le bouton approprié.

Une fois cela fait, vous pouvez ajouter un élément de mise en page à une disposition de la même manière que vous le feriez d'un widget. Ainsi, lorsque le bouton est ajouté, changer pour utiliser votre classe d'élément de mise en page personnalisée.

Je ne l'ai pas fait tester tout cela, il est donc une solution théorique à ce stade. Je ne connais aucune façon de le faire cette solution par concepteur, si cela est souhaité.

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