这是我的代码:
cLicensePanel::cLicensePanel( wxWindow * parent )
: wxPanel(parent,-1,wxPoint(0,0),wxSize(500,500))
{
wxBoxSizer * szrUserKey = new wxBoxSizer(wxHORIZONTAL);
myUserKeyCtrl = new wxTextCtrl(this,-1,L"");
szrUserKey->Add( new wxStaticText(this,-1,wxString(L"User's ComputerKey:")),
0,wxALL,10);
szrUserKey->Add( myUserKeyCtrl,0,wxALL,10);
szrUserKey->Add( new wxButton(this,IDC_Generate,L"Generate"),0,wxALL,10);
SetSizer( szrUserKey );
}
这是为了制作这个显示,3 个小部件整齐地排列成一排。
然而,我实际上得到的是所有的小部件一个一个堆叠在一起
为什么?
我可以通过显式调用 Sizer::Layout() 来强制正确显示
cLicensePanel::cLicensePanel( wxWindow * parent )
: wxPanel(parent,-1,wxPoint(0,0),wxSize(500,500))
{
wxBoxSizer * szrUserKey = new wxBoxSizer(wxHORIZONTAL);
myUserKeyCtrl = new wxTextCtrl(this,-1,L"");
szrUserKey->Add( new wxStaticText(this,-1,wxString(L"User's Computer Key:")),0,wxALL,10);
szrUserKey->Add( myUserKeyCtrl,0,wxALL,10);
szrUserKey->Add( new wxButton(this,IDC_Generate,L"Generate"),0,wxALL,10);
szrUserKey->Layout();
SetSizer( szrUserKey );
}
我可以忍受这一点,尽管在我看来应该没有必要调用 Layout. 我还怀疑 Layout 调用是必要的原因可能是解决让我难过的问题的重要线索。
以上是使用 wxWidgets v2.8.12 时的行为。我正在升级到 v2.9.3。
在新版本中,没有调用 Layout() 的初始代码显示了相同的问题,所有小部件都堆叠在一起。如果我在 v2.9.3 中添加对 layout() 的调用,那么我根本看不到任何小部件 - 面板显示完全空白!