Как создать изменяемый размер панелей в wxwidgets?

Мне нужно иметь 3 панели в кадре, в которых левая панель и правая панель должны быть изменяемыми пользователем, перетаскивая влево или вправо. Я сделал это с помощью менеджера AUI, но я хотел бы сделать то же самое без использования AUI (может быть, размер). Есть идеи как этого добиться?
Я попытался, как показано ниже, но я не могу изменить размер панели.

MyFrame1 :: MyFrame1 (wxWindow * parent, идентификатор wxWindowID, const wxString& название, const wxPoint& pos, const wxSize& размер, длинный стиль): wxFrame (родитель, идентификатор, заголовок, позиция, размер, стиль)
{
this-> SetSizeHints (wxDefaultSize, wxDefaultSize);

wxBoxSizer* bSizer6;
bSizer6 = new wxBoxSizer( wxHORIZONTAL );

wxBoxSizer* bSizer7;
bSizer7 = new wxBoxSizer( wxHORIZONTAL );

m_panel11 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
bSizer7->Add( m_panel11, 5, wxEXPAND | wxALL, 5 );bSizer7->Add( 0, 0, 1, wxEXPAND, 5 );bSizer6->Add( bSizer7, 1, wxEXPAND, 5 );

wxBoxSizer* bSizer9;
bSizer9 = new wxBoxSizer( wxHORIZONTAL );

m_panel12 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
bSizer9->Add( m_panel12, 1, wxEXPAND | wxALL, 5 );bSizer6->Add( bSizer9, 1, wxEXPAND, 5 );

wxBoxSizer* bSizer10;
bSizer10 = new wxBoxSizer( wxHORIZONTAL );

m_panel13 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
bSizer10->Add( m_panel13, 1, wxEXPAND | wxALL, 5 );bSizer6->Add( bSizer10, 1, wxEXPAND, 5 );this->SetSizer( bSizer6 );
this->Layout();

this->Centre( wxBOTH );

}

1

Решение

Звучит так, как будто вы хотите использовать wxSplitterWindow. Вы можете найти документацию для этого класса в http://docs.wxwidgets.org/3.0/classwx_splitter_window.html.

2

Другие решения

MyFrame1::MyFrame1(wxWindow* parent, wxWindowID id, const wxString& title,
const wxPoint& pos, const wxSize& size, long style) :
wxFrame(parent, id, title, pos, size, style)
{
// use a base panel, so that you have the same background colour between controls
// (panels in your case) too
wxPanel* basePanel = new wxPanel(this);

// create your controls; no need to add default values...
m_panel11 = new wxPanel(basePanel);
m_panel12 = new wxPanel(basePanel);
m_panel13 = new wxPanel(basePanel);

// create a sizer; one should be enough
wxSizer* bSizer = new wxBoxSizer(wxHORIZONTAL);

// add your controls to the sizer
bSizer->Add(m_panel11, 1, wxEXPAND|wxALL, 5);
bSizer->Add(m_panel12, 0, wxEXPAND|wxUP|wxDOWN|wxRIGHT, 5);
bSizer->Add(m_panel13, 1, wxEXPAND|wxUP|wxDOWN|wxRIGHT, 5);
// if you need different resizing proportion for each panel, read the description
// of proportion parameter in wxSizer:Add() docs

basePanel->SetSizer(bSizer);
}
0

По вопросам рекламы [email protected]