Page 1 of 1

Margin QDialog

Posted: 28 Aug 2014, 04:42
by Violette
Hello,
étant actuellement en pleine création d'un thème pour une petite appli test, je me heurte à un petit soucis de margin.

Le widget principal est un QDialog.

Image

Situation 1 : margin 0 sur la groupbox.
Situation 1 : margin-bottom -20px sur la groupbox.
Situation 3 : Celle désirée.

Il y a donc un padding sur le qdialog, malheureusement impossible de le mettre a 0. J'ai bien cherché mais pas trouvé de réponse qui fonctionne :S Avez-vous un idée ?

Image

De même, ici, il y a des margin: 0 et des padding: 0 pour les 3 widgets, la border de qgroupbutton et des qlabel/qpushbutton devrais donc être cote à cote tel une bordure faisant 2 px. Mais non, il y a toujours et encore cette espace, le même, toujours et encore là. :S

Je ne sais absolument pas comment l'enlever. Le problème est que tout ceci prend de la place pour rien au final, et fait carrément moche.

Voici le code de la chose :

Code: Select all

var buttonGroup = new QGroupBox;
buttonGroup.setStyleSheet('QGroupBox {border: 1px solid red; margin: 0px; padding: 0px;/*padding-bottom: -20px;*/} QPushButton {border: 1px solid red; margin: 0px; padding: 0px;} QLabel {border: 1px solid red; margin: 0px; padding: 0px;}');
var buttonLayout = new QGridLayout;
buttonLayout.addWidget(author, 0, 0);
buttonLayout.addWidget(buttonBox, 0, 1);
buttonGroup.setLayout(buttonLayout);
Remplacer buttonGroup = QGroupBox par buttonGroup = QWidget ne change absolument rien.

Merci.

Re: Margin QDialog

Posted: 28 Aug 2014, 10:04
by Jmgr
Le layout a également une propriété spacing : http://qt-project.org/doc/qt-4.8/qlayou ... acing-prop
As-tu essayé de changer celle-ci ?

Re: Margin QDialog

Posted: 29 Aug 2014, 18:38
by Violette
Ah ouais merci, j'ai fini par trouver et c'est presque elle. La soluce ici.

Explication pour ceux qui chercheraient aussi :

spacing gère l'espace entre les différents widgets enfant présents dans un widget parent et uniquement entre eux ce qui ne fonctionnait pas dans mon cas car il n'y a qu'une ligne de widgets enfant (qlabel et 2 qpushbutton) dans mon widget parent (qgroupbox). Si ces 3 widgets avaient été positionné dans un axe vertical au lieu d'horizontal, ils auraient été collé entre eux et uniquement entre eux avec un spacing(0).

Mais spacing ne gère pas le margin présent entre le widget parent et les widgets enfants, pour cela il faut utiliser setContentsMargins.
Car ouais l'espace présent au contour de la fenêtre est un margin (espace extérieur au bloc) du qdialog et non un padding (espace intérieur au bloc) comme on pourrait le penser.