首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxWidgets拟合大wxGrid在wxFlexGridSizer中的应用

wxWidgets拟合大wxGrid在wxFlexGridSizer中的应用
EN

Stack Overflow用户
提问于 2019-08-09 11:23:09
回答 1查看 396关注 0票数 0

问题

我有一个wxGrid,它有许多行(>200行)放置在wxFlexGridSizer中。问题是我在网格下面的按钮消失了。与wxBoxSizer相同的是,使用比例设置工作。

结果应该类似于wxBoxSizer解决方案。在这种情况下有使用wxFlexGridSizer的方法吗?

wxBoxSizer (工作)

代码语言:javascript
复制
    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 (不工作)

代码语言:javascript
复制
    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制作的)

EN

回答 1

Stack Overflow用户

发布于 2019-08-09 23:16:25

默认情况下,wxGrid将尝试在屏幕上显示其所有200行,这不会为按钮留下足够的位置。您可以调用SetInitialSize() (或者在它的ctor中创建网格时指定初始大小)来更改它。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57429018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档