cuaderno multilínea wxWidget: no se puede ver la segunda línea
-
08-07-2019 - |
Pregunta
Este código funciona perfectamente
myNotebook = new wxNotebook( this, IDC_NOTEBOOK, wxDefaultPosition, wxSize(500, 500) );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 1" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 2" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 3" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 4" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 5" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 6" );
Sin embargo, los nombres de las pestañas son tan largos y numerosos que deben desplazarse horizontalmente.
El uso del estilo wxNB_MULTILINE no funciona correctamente: la segunda línea de pestañas está oculta y no se puede leer
myNotebook = new wxNotebook( this, IDC_NOTEBOOK, wxDefaultPosition, wxSize(500, 500), wxNB_MULTILINE );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 1" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 2" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 3" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 4" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 5" );
myNotebook->AddPage( new wxNotebookPage( myNotebook, -1 ), L"TEST RECOMMENDATIONS 6" );
¿Cómo uso el estilo multilínea correctamente?
Solución 3
Finalmente, encontré una solución elegante. Necesito forzar una actualización después de cambiar el tamaño.
void MyFrame::OnSize(wxSizeEvent& )
{
if( myNotebook ) {
myNotebook->SetSize( GetClientRect() );
myNotebook->Refresh();
}
}
Otros consejos
Después de la experimentación, encontré esta manera:
Agregue una línea, después de todas las llamadas AddPage ()
myNotebook->Layout();
El problema parece ser que el panel que contiene la página del cuaderno cubre la segunda línea de pestañas.
Puedo obligar al panel a moverse fuera del camino manejando el evento EVT_NOTEBOOK_PAGE_CHANGED
y agregando esta línea de código
myNotebook->GetPage( event.GetSelection() )->Move(0,40);
Feo, pero hace el trabajo.