многострочный блокнот wxWidget - не видит 2-ю строку - PullRequest
1 голос
/ 20 ноября 2008

Этот код отлично работает

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 ]

1 голос
/ 21 октября 2009

Похоже, проблема в том, что панель, которая содержит страницу записной книжки, охватывает вторую строку вкладок.

Я могу заставить панель уйти с дороги, обработав событие EVT_NOTEBOOK_PAGE_CHANGED и добавив эту строку кода

myNotebook->GetPage( event.GetSelection() )->Move(0,40);

Ужасно, но это делает работу.

1 голос
/ 20 ноября 2008

После экспериментов я нашел такой способ:

Добавьте одну строку после всех вызовов AddPage ()

    myNotebook->Layout();
0 голосов
/ 04 ноября 2009

Наконец-то нашли элегантное решение. Мне нужно принудительное обновление после изменения размера.

void MyFrame::OnSize(wxSizeEvent& )
{
    if( myNotebook ) {
        myNotebook->SetSize( GetClientRect() );
        myNotebook->Refresh();
    }
}
...