многострочный блокнот wxWidget - не видит 2-ю строку
-
08-07-2019 - |
Вопрос
Этот код отлично работает
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" );
Однако названия вкладок настолько длинные и многочисленные, что их необходимо прокручивать по горизонтали.
Использование стиля wxNB_MULTILINE не работает должным образом: вторая строка вкладок скрыта и нечитаема
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" );
Как правильно использовать многострочный стиль?
Решение 3
Наконец-то нашли элегантное решение. Мне нужно принудительно обновить после изменения размера.
void MyFrame::OnSize(wxSizeEvent& )
{
if( myNotebook ) {
myNotebook->SetSize( GetClientRect() );
myNotebook->Refresh();
}
}
Другие советы
После экспериментов я нашел такой способ:
Добавьте одну строку после всех вызовов AddPage ()
myNotebook->Layout();
Кажется, проблема в том, что панель, содержащая страницу записной книжки, охватывает вторую строку вкладок.
Я могу заставить панель уйти с дороги, обработав событие EVT_NOTEBOOK_PAGE_CHANGED
и добавив эту строку кода
myNotebook->GetPage( event.GetSelection() )->Move(0,40);
Ужасно, но это делает работу.