1

非常に苛立たしいサイザーの問題があります。

私は次のようwxFlexGridSizerに、垂直の中に2つの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同じ幅に編集されていません。sが小さい下の方labelは、常に上の方よりも狭く、dataフィールド間の位置がずれたままになります。どちらも旗が付いているのでExpand()、幅の狭い方は幅の広い方と同じ幅に拡大するはずですよね?

Right()(フラグを下のフラグに追加するときにも、フラグを追加しようとしましたwxBoxSizerが、何も実行されなかったため、非常に混乱しました。)

誰かが私が間違っているところを指摘することによって私の正気を救うことができますか?

編集:私が知る限り、これはwxWidgetsのバグです。フラグは、垂直サイザー内のExpandアイテムに最大幅まで拡張するように指示する必要があります。私が間違っている場合は、誰かが私を訂正してください。

4

1 に答える 1

2

結局のところ、バグは私のものでした。wxFlexGridSizer私はsaの拡張可能な列に、を付けたと思いましたwxFlexGridSizer::AddGrowableColが、それはコードの以前の反復にあったに違いありません。私がそれをしたら、彼らは私が望んでいたように拡大しました。

于 2011-08-04T21:39:14.657 に答える