我基本上是想做一个简单的对话。它的问题是,无论我在wxGridbagsizer的帮助下做什么,按钮总是出现在左角(相互之间)。
代码段:
wxPanel* panel = new wxPanel(this,-1);
wxButton* b1 = new wxButton(panel,wxID_ANY,L"OK",wxDefaultPosition,wxDefaultSize,0);
wxButton* b2 = new wxButton(panel,wxID_ANY,L"Cancel",wxDefaultPosition,wxDefaultSize,0);
gbs->Add(b1,wxGBPosition(1,1));
gbs->Add(b2,wxGBPosition(2,2));
gbs->Fit(panel);
答案 0 :(得分:2)
未执行sizer布局。很难确定是什么问题,因为你的代码片段遗漏了很多 - 例如我假设你正在调用sizer的构造函数,但是你没有显示代码。无论如何,我预计问题是你没有告诉专家组你的sizer。
panel->SetSizer( gbs );
答案 1 :(得分:1)
尝试使用DialogBlocks并查看它生成的代码,以了解grid bag sizer的使用工作流程。
void Yarrr1::CreateControls()
{
////@begin Yarrr1 content construction
Yarrr1* itemPanel1 = this;
wxGridBagSizer* itemGridBagSizer2 = new wxGridBagSizer(0, 0);
itemGridBagSizer2->SetEmptyCellSize(wxSize(10, 20));
itemPanel1->SetSizer(itemGridBagSizer2);
wxButton* itemButton3 = new wxButton( itemPanel1, ID_BUTTON6, _("Button"), wxDefaultPosition, wxDefaultSize, 0 );
itemGridBagSizer2->Add(itemButton3, wxGBPosition(0, 0), wxGBSpan(1, 1), wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxButton* itemButton4 = new wxButton( itemPanel1, ID_BUTTON7, _("Button"), wxDefaultPosition, wxDefaultSize, 0 );
itemGridBagSizer2->Add(itemButton4, wxGBPosition(1, 1), wxGBSpan(1, 1), wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL, 5);
////@end Yarrr1 content construction
}