2011-07-31 41 views
1

我有一个非常令人沮丧的sizer问题。wxWidgets儿童sizer不扩大

我有两个wxFlexGridSizer S(以及其他一些东西)垂直wxBoxSizer里面,像这样:

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

wxFlexGridSizer

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

每个wxFlexGridSizer使用相同的代码填写我不打算在Expand编辑相同的宽度,因为我打算。较低的一个,较小的label s,总是比上一个窄,使得data字段在它们之间未对齐。既然它们都加上了Expand()的标志,那么较窄的那个应该扩大到与较宽的一样的宽度,对吧?

(我甚至尝试添加的Right()标志到下一个太,将它添加到wxBoxSizer时,却什么也没做,这真的搞糊涂了。)

任何人都可以通过保存我的理智指出我要去哪里错了?

编辑:据我所知,这是一个wxWidgets的错误。标记Expand应该告诉垂直分割器中的项目将其展开为最大宽度。如果我错了,有人请纠正我。

回答

2

事实证明,这个错误是我的。我认为我给wxFlexGridSizer提供了一个可扩展的专栏,其中wxFlexGridSizer::AddGrowableCol,但这必须在代码的早期迭代中。一旦我完成了,他们就扩大了我想要的。