繁体   English   中英

在wxFlexGridSizer中适合大wxGrid的wxWidgets

[英]wxWidgets fitting big wxGrid in wxFlexGridSizer

问题

我有一个wxGrid与许多行(> 200)放置在内部wxFlexGridSizer 问题是网格下方的我的按钮消失了。 使用wxBoxSizer的情况与使用比例设置相同。

结果类似于wxBoxSizer解决方案。 在这种情况下是否可以使用wxFlexGridSizer

wxBoxSizer(正在运行)

wxBoxSizer ScreenShot

    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(不起作用)

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

    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

这里有一个类似的问题,但是解决方案是一种解决方法:

在对话框(wxDialog)中拟合大网格(wxGrid)

(使用wxFormBuilder v3.8.1进行屏幕截图)

默认情况下, wxGrid将尝试在屏幕上显示其所有200行,而该行将没有足够的空间放置按钮。 您可以调用SetInitialSize() (或在其ctor中创建网格时指定初始大小)来更改此设置。

与此问题无关,但我强烈建议您使用更具可读性的基于wxSizerFlags的API,而不要使用旧的Add()重载。 您也不应该对像素的边框大小进行硬编码,这在某些平台上总是错误的,并且在高DPI显示器上会变得更糟(并且使用wxSizerFlags会自动进行处理)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM