wxSplitterWindow
Posted: Thu Oct 18, 2012 4:10 am
Здравствуйте. Подскажите, пожалуйста. Есть сплиттер, который делит основной фрейм на две части. Но делит почему то не на равные части, хотя при вызове SplitHorizontally sashPosition не указываю, и оно равно 0 по умолчанию. Размер основного фрейма равен 800,600. Размер верхней части очень маленький, могу по логике предположить, что он равен 10, та как размер сплиттера по умолчанию равен ( 20, 20 ). Но почему, если добавить еще один сплиттер в существующий ( не важно, в верхнюю часть или нижнюю ), то окна делятся нормально, на две равные части. Минимальный пример:
Возможно ли как то по нормальному сделать, что бы основной фрейм делился на две одинаковые части при запуске? Заранее спасибо.
Code: Select all
MainFrame::MainFrame()
: wxFrame( 0, wxID_ANY, "Test app", wxDefaultPosition, wxSize( 800, 600 ))
{
wxBoxSizer *mainSizer = new wxBoxSizer( wxVERTICAL );
wxSplitterWindow *mainSplitter = new wxSplitterWindow( this ),
*upperSplitter = new wxSplitterWindow( mainSplitter ),
*lowerSplitter = new wxSplitterWindow( mainSplitter );
wxPanel *testpanel1 = new wxPanel( upperSplitter ),
*testpanel2 = new wxPanel( upperSplitter ),
*testpanel3 = new wxPanel( lowerSplitter ),
*testpanel4 = new wxPanel( lowerSplitter );
testpanel1->SetBackgroundColour( *wxRED );
testpanel2->SetBackgroundColour( *wxGREEN );
testpanel3->SetBackgroundColour( *wxBLUE );
mainSplitter->SplitHorizontally( upperSplitter, lowerSplitter );
upperSplitter->SplitVertically( testpanel1, testpanel2 );
lowerSplitter->SplitVertically( testpanel3, testpanel4 );
mainSizer->Add( mainSplitter, 1, wxEXPAND );
SetSizer( mainSizer );
}