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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top