我的应用程序中有以下子父级关系:
问题是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);
如何让滚动条显示并滚动按钮?
答案 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。修改后,它肯定会起作用;)相信我。