我有一个非常令人沮丧的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}}标志应告诉垂直分级器中的项目将其自身扩展到其最大宽度。如果我错了,请有人纠正我。答案 0 :(得分:2)
事实证明,这个错误是我的。我以为我给了wxFlexGridSizer
一个可增长的列,wxFlexGridSizer::AddGrowableCol
,但这必须在代码的早期迭代中。一旦我这样做了,他们就像我想要的那样扩展。