wxWidgets дочерний sizer не расширяется - PullRequest
1 голос
/ 01 августа 2011

У меня очень неприятная проблема с классификатором.

У меня есть два wxFlexGridSizer (и несколько других вещей) внутри вертикали 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());

Но wxFlexGridSizer s не Expand отредактированы на ту же ширину, как я намереваюсь.Нижний с меньшими label s всегда уже верхнего, оставляя поля data смещенными между ними.Поскольку оба они были добавлены с флагом Expand(), более узкий должен расширяться до той же ширины, что и более широкий, верно?

(я даже пытался добавить флаг Right() к нижнемуКроме того, при добавлении его в wxBoxSizer, но он ничего не сделал, что действительно смутило меня.1025 *

РЕДАКТИРОВАТЬ: Насколько я могу судить, это ошибка wxWidgets.Флаг Expand должен указывать элементам в вертикальном сортировщике расширяться до максимальной ширины.Если я ошибаюсь, кто-нибудь, пожалуйста, поправьте меня.

1 Ответ

2 голосов
/ 05 августа 2011

Как оказалось, ошибка была моей.Я думал, что дал wxFlexGridSizer растущий столбец с wxFlexGridSizer::AddGrowableCol, но это должно было быть в более ранней итерации кода.Как только я это сделал, они расширились, как я и хотел.

...