-
1 pièce(s) jointe(s)
Espace dans des layouts
Salut.. j'ai un souci..je cherche à gérer les espaces qu'il y a dans mes layouts...j'ai créé une classe (MyWidget) qui dérive de QPushButton contenant deux QLabel..L'un des QLabel contient une image et l'autre du texte..les deux QLabels sont insérés dans un QVBoxLayout..j'ai créé maintenant plusieurs objets de ma classe que j'ai inséré dans deux QHBoxLayouts qui sont à leur tour insérés dans un QVBoxLayout..(voir le resultat dans l'image) mon souci c'est d'arrivé à gérer les espaces qu'il y a entre mes deux QHBoxLayouts incluents dans le QVBoxLayout et l'espace entre mes objets incluent dans chaque QHBoxLayout..j'ai déjà essayé setcontentmargin et setSpacing mais rien n'a changé...
-
1 pièce(s) jointe(s)
Salut,
En allant de temps en temps à la ligne, ton explication serait sans doute un peu plus libible ;)
Mais, dis moi: dans quelle mesure un QGridLayout ne serait-il pas plus efficace qu'un layout dans un layout (dans un layout) pour ce que tu veux faire :question:
Mais, ceci dit, l'espace final qui sépare les éléments de ton QVBoxLayout correspondra à la somme des espaces de tous tes layouts.
Autrement dit, cela prend une forme proche dePièce jointe 412943
(désolé, je suis pas très doué pour ce genre de dessin :P) où- 1 correspond à la propriété marginContain (du VBoxLayout)
- 2 correspond à la propriété itemSpacing (du VBoxLayout)
- 3 correspond à la propriété margingContain (du HBoxLayout)
- 5 correspond à la propriété itemSpacing (du HBoxLayout)
- 6 correspond à la propriété itemSpacing (du layout de ton Widget)
Il faut comprendre que, par défaut, les marges sont de 11 pixels par défaut, ou celles définies dans le stype de ton widget, et que pour l'espace entre les élément (spacing), si aucune valeur n'est définie, un BoxLayout va reprendre celui défini pour son parent.
Si tu veux adapter "finement" les différents espaces, tu dois donc les adapter pour chacun des éléments que tu vas placer dans un layout ;)
par exemple
- ton widget :
- setContentsMargins(0,0,0,0)
- ton HBoxlayout:
- setContentsMargins(0,0,0,0)
- setSpacing(ecartementVertical)
- ton VBoxLayout:
- setContentsMargins(margeGauche, margeHaut, margeDroite, margeBas)
- setSpacing(ecartementHorizontal)
(ou les termes ecartementVertical, ecartementHorizontal, margeGauche, margeHaut, margeDroite et margeBas correspondent à des valeurs exprimées en pixels pour les écarts indiqués ;) )