在对话框 (wxDialog) 中拟合大网格 (wxGrid)

Fitting a big grid (wxGrid) in a dialog (wxDialog)

本文关键字:网格 wxGrid 拟合 wxDialog 对话框      更新时间:2023-10-16

这是我的布局:

  • 我有一个尺寸器,其中包含一个网格(比例为 1)和一个确定/取消按钮栏

  • 所有的事情都在 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)

处理此问题的最简单方法是使用固定大小的网格。 如果行数超过容纳的行数,则会出现滚动条。 在构造函数中设置所需的大小。

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