0

私のアプリケーションには、次の子と親の関係があります。

ここに画像の説明を入力してください

問題は、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);

スクロールバーにボタンを表示してスクロールさせるにはどうすればよいですか?

4

3 に答える 3

4

wxScrolledWindowスクロールバーを使用するには、メソッドを使用して、完全な論理サイズ(おそらく小さい物理サイズではなく)を示す必要がありますSetVirtualSize()。これは、直接呼び出すか、サイザーをスクロールされたウィンドウに関連付け、このサイザーに要素を追加してを呼び出すことで実行できますFitInside()

于 2012-09-20T09:43:30.157 に答える
3

デフォルトの状態では、スクロールバーを表示するには、ウィンドウの仮想サイズをウィンドウの実際のサイズよりも大きくする必要があります。

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

ただし、バージョン3.1では、これだけではスクロールバーを表示できません。スクロール速度も設定する必要があります。(これは、機能するデフォルト設定があるはずなので、私にはバグのように感じます。)

scr->SetScrollRate(1, 1);
于 2018-05-02T14:32:36.983 に答える
0

変更する必要があります

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

jpgを入れてください。これを変更した後、それは確かに機能します;)私を信じてください。

于 2012-09-19T20:04:37.827 に答える