c++ - WXWidgets Sizers 在侧面留下一个空隙

标签 c++ wxwidgets

我的项目在主框架上有一个 BoxSizer,然后 BoxSizer 包含一个作为 Gride Sizer 的面板。大小调整器按预期工作,直到窗口水平大小超过某个点,然后什么都不会水平拉伸(stretch)。当屏幕最大化时,右侧会出现间隙,但元素会正确占据整个垂直高度。

MyFrame::MyFrame(const wxString& title,const wxPoint& pos,const wxSize& size)
: wxFrame(NULL,wxID_ANY,title,pos,size){
   box=new wxBoxSizer(wxHORIZONTAL);
   panel=new wxPanel(this);
   grid=new wxGridSizer(14,7,3,3);
   //add all the elements to the grid, in this way
   grid->Add(new CustomButton("Text",panel),1,wxEXPAND);
   panel->SetSizer(grid);
   box->Add(panel);
   this->SetSizer(box);
}

当屏幕最大化时,它看起来像这样。

[框文本和元素] [间隙] [窗口边界]

[框文本和元素] [间隙] [窗口边界]

[窗口边界]

我不想要缝隙,我想要盒子延伸到窗口的边界。

最佳答案

您必须同时使用非零(通常仅为 1)比例和 wxEXPAND 以及顶级 box sizer,以使您的代码按预期工作。为 grid sizer 元素指定 wxEXPAND 足以使它们扩展到面板中的可用空间,但面板本身并未配置为扩展以占用框架中的所有空间,因此它赢了't.

但实际上,在一个框架内有一个面板,您想要扩展以填充所有可用空间的情况非常普遍,因此有专门的支持:事实上,如果您不使用 box sizer,它已经可以正常工作,因为默认情况下,框架将调整其唯一子项的大小以占用其中的所有空间。

关于c++ - WXWidgets Sizers 在侧面留下一个空隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35514478/

相关文章:

python - 如何在wx python中制作一个简单的 watch

c++ - 展开路径中包含环境变量的文件名

c++ - std::future::get() 不捕获异步函数抛出和程序崩溃时的异常

c++ - 在父部件中居中子部件(布局中添加了父部件)

c++ - 为什么 difference_type 是 std::weakly_incrementable 概念的一部分?

c++ - 使用稍后在 C++ 中定义的类类型定义类成员

c++ - 在服务器之间传输快速变化的数据

winapi - 在 Windows API 中设置菜单的宽度

windows - Windows 事件是顺序处理还是并行处理?

ubuntu - 如何在基于 Ubuntu 的 linux 上使用 erlangs GUI 调试器调试 Elixir?