【问题标题】:Fitting a big grid (wxGrid) in a dialog (wxDialog)在对话框 (wxDialog) 中拟合大网格 (wxGrid)
【发布时间】:2023-03-28 14:43:01
【问题描述】:

这是我的布局:

  • 我有一个包含网格(比例为 1)和 ok/cancel 按钮栏的 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)

【问题讨论】:

  • 请贴出代码。你是在构造函数中设置网格的大小吗?

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


【解决方案1】:

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

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

【讨论】:

  • 太好了,所以我选择了网格具有固定大小的选项,并且它完成了这项工作。谢谢。
猜你喜欢
  • 2019-12-17
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 2011-07-02
  • 2021-12-08
  • 2011-09-25
  • 1970-01-01
相关资源
最近更新 更多