wxWidgets child sizer没有扩展

时间:2011-07-31 23:56:24

标签: wxwidgets sizer

我有一个非常令人沮丧的sizer问题。

我在垂直wxFlexGridSizer中有两个wxBoxSizer s(以及其他一些东西),如下所示:

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

使用相同的代码填充每个wxFlexGridSizer

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并没有像我想要的那样Expand到相同的宽度。较低的label s较小,总是比较高的data更窄,Expand()字段之间的距离不对齐。由于它们都添加了Right()标志,因此较窄的标志应扩展到与较宽的标志相同的宽度,对吧?

(我甚至尝试将wxBoxSizer标记添加到较低的标记时将其添加到Expand,但它没有做任何事情,真的让我困惑。)

任何人都可以通过指出我出错的地方来保存我的理智吗?

编辑:据我所知,这是一个wxWidgets错误。 {{1}}标志应告诉垂直分级器中的项目将其自身扩展到其最大宽度。如果我错了,请有人纠正我。

1 个答案:

答案 0 :(得分:2)

事实证明,这个错误是我的。我以为我给了wxFlexGridSizer一个可增长的列,wxFlexGridSizer::AddGrowableCol,但这必须在代码的早期迭代中。一旦我这样做了,他们就像我想要的那样扩展。