1

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

wxFlexGridSizer在一个 vertical 中有两个 s (和其他一些东西)wxBoxSizer,如下所示:

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());

但是wxFlexGridSizers 并没有Expand像我打算的那样被编辑到相同的宽度。具有较小labels 的下一个总是比上一个窄,从而使data它们之间的字段未对齐。由于它们都添加了Expand()标志,因此较窄的应扩展为与较宽的相同的宽度,对吗?

(我什至尝试将Right()标志添加到较低的标志,将其添加到 时wxBoxSizer,但它什么也没做,这真的让我感到困惑。)

任何人都可以通过指出我哪里出错来挽救我的理智吗?

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

4

1 回答 1

2

事实证明,这个错误是我的。我以为我给了wxFlexGridSizersa 可增长的列,带有wxFlexGridSizer::AddGrowableCol,但这一定是在代码的早期迭代中。一旦我这样做了,它们就会按照我的意愿扩展。

于 2011-08-04T21:39:14.657 回答