当比例为0时,防止wxScrolledWindow滚动

时间:2017-07-10 11:46:58

标签: c++ user-interface layout wxwidgets

我正在尝试布局我的wxWidgets窗口。

我有一个垂直wxBoxSizer,其中有一个小组proportion = 1和一个wxScrolledWindowproportion = 0。我希望wxScrolledWindow的垂直高度足够大,以便在其中包含wxButton s,它们是水平布局的。

但是,proportion = 0会出现垂直滚动条,即使我没有传递wxVSCROLL标记。我尝试过设置proportion = 1,但这意味着wxScrolledWindow会高于必要值。

这是一个问题的图像,取自wxFormBuilder内部(在实际的wxWidgets程序中出现相同的行为,wxScrolledWindowproportion = 0

The wxScrolledWindow has a vertical scrollbar, which I want to remove.

这是我想要实现的目标:

This is what I want the layout to look like. I made this image by manually settings the proportions, but I want it to occur automatically.

请有人解释我如何在C ++中实现这一点(或者wxFormBuilder,这没关系);我已经浏览了wxWidgets文档,但我一般都是GUI库的新手,所以非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您不想要垂直滚动条,只需将其禁用,否则布局代码并不真正知道滚动窗口所需的大小。

以下是创建所需布局的内容(您可以将其粘贴到MyFrame ctor末尾的最小样本中进行测试):

auto const sv = new wxBoxSizer(wxVERTICAL);
sv->Add(new wxButton(this, wxID_ANY, "Button 0"), wxSizerFlags(1).Border());
auto const p = new wxScrolledWindow(this);
p->SetScrollRate(10, 0);
auto const sh = new wxBoxSizer(wxHORIZONTAL);
for ( int i = 0; i < 10; ++i )
    sh->Add(new wxButton(p, wxID_ANY, wxString::Format("Button %d", i)), wxSizerFlags().Border());
p->SetSizer(sh);
sv->Add(p, wxSizerFlags().Expand());
SetSizer(sv);