我正在尝试布局我的wxWidgets窗口。
我有一个垂直wxBoxSizer
,其中有一个小组proportion = 1
和一个wxScrolledWindow
,proportion = 0
。我希望wxScrolledWindow
的垂直高度足够大,以便在其中包含wxButton
s,它们是水平布局的。
但是,proportion = 0
会出现垂直滚动条,即使我没有传递wxVSCROLL
标记。我尝试过设置proportion = 1
,但这意味着wxScrolledWindow
会高于必要值。
这是一个问题的图像,取自wxFormBuilder内部(在实际的wxWidgets程序中出现相同的行为,wxScrolledWindow
有proportion = 0
:
这是我想要实现的目标:
请有人解释我如何在C ++中实现这一点(或者wxFormBuilder,这没关系);我已经浏览了wxWidgets文档,但我一般都是GUI库的新手,所以非常感谢您的帮助。
答案 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);