c++ - 在对话框 (wxDialog) 中安装一个大网格 (wxGrid)

标签 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, wx​​DefaultPosition, 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 ));
}

关于c++ - 在对话框 (wxDialog) 中安装一个大网格 (wxGrid),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6070430/

相关文章:

c++ - 对 C++ 字符串的字符进行排序

c++ - 子类如何使用与子类相同的方法名调用父类(super class)的方法?

Java Swing 属性编辑器

asp.net - 从非常大的列表中选择一个项目

layout - Emacs ECB - 保存和恢复自定义布局

c++ - 将 DevC++ 移植到 Linux

c++ - 为什么不为函数返回的对象调用析构函数?

user-interface - 如何从回调函数中获取之前输入的值?

css - Flexbox 问题 - 移动优先到 iPad 设计

android - xml 布局中的自定义 View