2011-07-31 5 views
1

J'ai un problème de dimensionnement très frustrant.wxWidgets enfant sizer ne se développe pas

J'ai deux wxFlexGridSizer s (et quelques autres) à l'intérieur d'une verticale wxBoxSizer, comme ceci:

mMainSizer->Add(topsizer, wxSizerFlags(0).Expand()); 
mMainSizer->Add(1, lineheight); 
mMainSizer->Add(mTypeLabel); 
mMainSizer->Add(mTypeSizer, wxSizerFlags(0).Expand()); 
mMainSizer->Add(1, lineheight); 

Chaque wxFlexGridSizer est rempli en utilisant le même code:

sizer->Add(label, wxSizerFlags(1).Expand()); 
sizer->Add(fieldwidth, 1); // To separate label and data 
sizer->Add(data, wxSizerFlags(0).Border(wxRIGHT, rborder).Right()); 

Mais le wxFlexGridSizer s ne sont pas Expand ed à la même largeur, comme je l'ai l'intention. Le plus bas, avec label s plus petit, est toujours plus étroit que le supérieur, laissant les champs data désalignés entre eux. Comme ils ont tous deux été ajoutés avec le drapeau Expand(), le plus étroit devrait s'étendre à la même largeur que le plus large, non?

(je l'ai même essayé d'ajouter le drapeau Right() au moins un aussi, lors de l'ajout à la wxBoxSizer, mais il n'a rien fait, ce qui vraiment me confondre.)

Quelqu'un peut-il sauver ma santé mentale par indiquant où je vais mal?

EDIT: Pour autant que je sache, il s'agit d'un bug de wxWidgets. Le drapeau Expand devrait indiquer aux articles dans un calibreur vertical de se développer à leur largeur maximum. Si je me trompe, quelqu'un s'il vous plaît corrigez-moi.

Répondre

2

En fin de compte, le bug était le mien. Je pensais que j'avais donné à la colonne wxFlexGridSizer une colonne croissante, avec wxFlexGridSizer::AddGrowableCol, mais cela devait être dans une itération antérieure du code. Une fois que j'avais fait cela, ils se sont développés comme je le voulais.

Questions connexes