这是我的布局:
我有一个包含网格(比例为1)和一个确定/取消按钮栏的sizer
所有东西都在wxDialog
这是:
|||||||||||||||
| |
| GRID |
| |
| |
| |
|||||||||||||||
| OK CANCEL |
|||||||||||||||
问题是网格包含太多行,并且过度流动屏幕,所以最后我没有看到对话框的顶部。有没有办法在对话框上调用Fit()来限制它的高度?
我尝试过这样的内容:SetSizeHints(-1,-1,-1,500);
和SetMaxSize(500,500)
,但它没有用。
我也尝试过这样做:this->SetSize(this->GetSize().GetX(), 500);
,但由于垂直滚动条出现在网格上,因此它不够宽并且会出现水平滚动条。
修改
在构造函数中,我调用wxGrid(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize)
答案 0 :(得分:2)
处理此问题的最简单方法是使用固定大小的网格。如果行数超过适合的数量,则会出现滚动条。您可以在构造函数中设置所需的大小。
new wxGrid( this, IDC_grid, wxPoint(-1,-1),wxSize(igridxsize,igridysize));
如果您想调整网格的大小,例如当用户调整应用程序窗口大小时,事情会复杂一些。您需要处理窗口大小事件并根据需要更改网格大小。
这些方面的东西:
myDialog::OnSize(wxSizeEvent& event);
{
wxSize dialogSize = event.GetSize();
myGrid->OnSize( wxSizeEvent(
dialogSize.GetWidth() * 0.9, dialogSize.GetHeight() * 0.7 ));
}