wxScrolledWindow滚动条不起作用

时间:2012-09-19 14:02:54

标签: c++ wxwidgets

我的应用程序中有以下子父级关系:

enter image description here

问题是wxScrolledWindow中没有可见(或工作)滚动条。

代码:

wxCollapsiblePane* collpane = new wxCollapsiblePane(this, ID_COLLPANE, "Tiles\t\t\t\t", wxDefaultPosition, wxDefaultSize, wxCP_NO_TLW_RESIZE);
wxSizer* sz = new wxBoxSizer(wxVERTICAL);
sz->Add(collpane,0,wxALIGN_RIGHT,10);
SetSizer(sz);
wxWindow* cPane = collpane->GetPane();
wxSizer* panesz = new wxBoxSizer(wxVERTICAL);
wxBitmap pic("test.bmp",wxBITMAP_TYPE_BMP);
wxScrolledWindow* scr = new wxScrolledWindow(cPane,ID_PANEL,wxDefaultPosition, wxSize(150,300));
scr->SetScrollbars(2,2,10,10);
wxClientDC dc(this);
scr->DoPrepareDC(dc);
panesz->Add( new wxBitmapButton(scr,-1,pic, wxDefaultPosition, wxSize(50,50) ), 1,  wxALIGN_CENTER, 0 );
/* more button adding here */
cPane->SetSizer(panesz);
panesz->SetSizeHints(cPane);

如何让滚动条显示并滚动按钮?

3 个答案:

答案 0 :(得分:4)

要使用滚动条,您需要使用wxScrolledWindow方法向SetVirtualSize()指示其完整逻辑(而不是可能更小的物理)大小。这可以通过直接调用它或通过将sizer与滚动窗口相关联,向此sizer添加元素并调用FitInside()来完成。

答案 1 :(得分:2)

在默认状态下,要显示滚动条,窗口的虚拟大小必须大于窗口的实际大小。

scr->SetVirtualSize(wxSize(2000,2000));

但是,在3.1版中,这还不足以让滚动条出现。还必须设置滚动速率。 (这对我来说就像一个错误,因为它似乎应该有一个默认设置。)

scr->SetScrollRate(1, 1);

答案 2 :(得分:0)

你应该修改

wxWindow* cPane = collpane->GetPane();
wxSizer* panesz = new wxBoxSizer(wxVERTICAL);
wxBitmap pic("test.bmp",wxBITMAP_TYPE_B ...

你应该放一个jpg。修改后,它肯定会起作用;)相信我。