【发布时间】:2012-08-22 17:18:06
【问题描述】:
我想用 wxWidgets 创建一个窗口,在其中置顶列表框,当你改变窗口大小时它的大小会改变。下面是三个按钮,当窗口大小改变时,它们的大小不会改变。按钮和列表框之间的距离是恒定的,当你调整窗口大小时不会改变。
【问题讨论】:
标签: wxwidgets
我想用 wxWidgets 创建一个窗口,在其中置顶列表框,当你改变窗口大小时它的大小会改变。下面是三个按钮,当窗口大小改变时,它们的大小不会改变。按钮和列表框之间的距离是恒定的,当你调整窗口大小时不会改变。
【问题讨论】:
标签: wxwidgets
您想要一个垂直的wx.BoxSizer,其比例为1 和wx.EXPAND 标志。这个 sizer 将在你的列表框中添加 1 和 wx.EXPAND 标志的比例。这个 sizer 也将有一个水平的 box sizer 并添加了三个按钮。你想对你提到的“窗口”做一个window.SetSizer(<your vertical sizer>)(可能是一个wx.Frame)。
【讨论】:
void SizerTest::CreateControls()
{
////@begin SizerTest content construction
SizerTest* itemFrame1 = this;
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
itemFrame1->SetSizer(itemBoxSizer2);
wxArrayString itemListBox3Strings;
wxListBox* itemListBox3 = new wxListBox( itemFrame1, ID_LISTBOX2, wxDefaultPosition, wxDefaultSize, itemListBox3Strings, wxLB_SINGLE );
itemBoxSizer2->Add(itemListBox3, 1, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer2->Add(itemBoxSizer4, 0, wxALIGN_LEFT, 0);
wxButton* itemButton5 = new wxButton( itemFrame1, ID_BUTTON3, _("Button"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer4->Add(itemButton5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxButton* itemButton6 = new wxButton( itemFrame1, ID_BUTTON4, _("Button"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer4->Add(itemButton6, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxButton* itemButton7 = new wxButton( itemFrame1, ID_BUTTON5, _("Button"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer4->Add(itemButton7, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
////@end SizerTest content construction
}
【讨论】: