wxWidget notebook várias linhas - não pode ver 2ª linha
-
08-07-2019 - |
Pergunta
Este código funciona perfeitamente
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" );
No entanto, os nomes das guias são tão longas e numerosas têm que ser rolado horizontalmente.
Usando o estilo wxNB_MULTILINE não funciona corretamente: a segunda linha de guias é obscurecida e ilegível
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" );
Como faço para usar o estilo de multilinha corretamente?
Solução 3
Finalmente, encontrou uma solução elegante. Eu preciso para forçar uma atualização após o redimensionamento.
void MyFrame::OnSize(wxSizeEvent& )
{
if( myNotebook ) {
myNotebook->SetSize( GetClientRect() );
myNotebook->Refresh();
}
}
Outras dicas
Depois de experimentação, eu encontrei esta maneira:
Adicionar uma linha, depois de toda a AddPage () chama
myNotebook->Layout();
O problema parece ser que o painel que detém a página do caderno cobre a segunda linha de guias.
Eu posso forçar o painel para mover fora do caminho por manipular o evento EVT_NOTEBOOK_PAGE_CHANGED
e adicionando esta linha de código
myNotebook->GetPage( event.GetSelection() )->Move(0,40);
feio, mas ele faz o trabalho.