[英]wxWidgets fitting big wxGrid in wxFlexGridSizer
我有一个wxGrid
与许多行(> 200)放置在内部wxFlexGridSizer
。 问题是网格下方的我的按钮消失了。 使用wxBoxSizer
的情况与使用比例设置相同。
结果应类似于wxBoxSizer解决方案。 在这种情况下是否可以使用wxFlexGridSizer
?
wxGrid *grid = new wxGrid(this, wxID_ANY);
grid->CreateGrid(0, 2);
grid->SetDefaultRowSize(20);
grid->AppendRows(200);
wxButton *button = new wxButton(this, wxID_ANY, "button");
wxBoxSizer *bsMain = new wxBoxSizer(wxHORIZONTAL);
bsMain->Add(grid, 1, wxALL, 5);
bsMain->Add(button, 0, wxALL, 5);
SetSizer(bsMain);
wxGrid *grid = new wxGrid(this, wxID_ANY);
grid->CreateGrid(0, 2);
grid->SetDefaultRowSize(20);
grid->AppendRows(200);
wxButton *button = new wxButton(this, wxID_ANY, "button");
wxFlexGridSizer *fgsMain = new wxFlexGridSizer(1, 0, 0);
fgsMain->Add(grid, 1, wxALL, 5);
fgsMain->Add(button, 0, wxALL, 5);
fgsMain->AddGrowableRow(0);
fgsMain->AddGrowableCol(0);
SetSizer(fgsMain);
我尝试对两行,比例设置, wxEXPAND
标志使用AddGrowableRow
。
这里有一个类似的问题,但是解决方案是一种解决方法:
(使用wxFormBuilder v3.8.1
进行屏幕截图)
默认情况下, wxGrid
将尝试在屏幕上显示其所有200行,而该行将没有足够的空间放置按钮。 您可以调用SetInitialSize()
(或在其ctor中创建网格时指定初始大小)来更改此设置。
与此问题无关,但我强烈建议您使用更具可读性的基于wxSizerFlags
的API,而不要使用旧的Add()
重载。 您也不应该对像素的边框大小进行硬编码,这在某些平台上总是错误的,并且在高DPI显示器上会变得更糟(并且使用wxSizerFlags
会自动进行处理)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.