在对话框中安装大网格(wxGrid)(wxDialog)

时间:2011-05-20 10:13:15

标签: c++ user-interface layout wxwidgets sizer

这是我的布局:

  • 我有一个包含网格(比例为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)

1 个答案:

答案 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 ));
}