问题
我有一个wxGrid,它有许多行(>200行)放置在wxFlexGridSizer中。问题是我在网格下面的按钮消失了。与wxBoxSizer相同的是,使用比例设置工作。
结果应该类似于wxBoxSizer解决方案。在这种情况下有使用wxFlexGridSizer的方法吗?
wxBoxSizer (工作)

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);wxGridSizer (不工作)

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标志使用wxEXPAND。
这里有一个类似的问题,但解决方案是一个解决办法:
Fitting a big grid (wxGrid) in a dialog (wxDialog)
(画面是用wxFormBuilder v3.8.1制作的)
发布于 2019-08-09 23:16:25
默认情况下,wxGrid将尝试在屏幕上显示其所有200行,这不会为按钮留下足够的位置。您可以调用SetInitialSize() (或者在它的ctor中创建网格时指定初始大小)来更改它。
与这个问题无关,但我强烈建议您使用更具可读性的wxSizerFlags-based API,而不是旧的Add()重载。您也不应该硬编码边框大小(像素),对于某些平台来说,这总是错误的,在高DPI显示器上会变得更糟(使用wxSizerFlags会自动处理这个问题)。
https://stackoverflow.com/questions/57429018
复制相似问题