wxWidgets — ширина списка wxListbook

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

Empty: введите описание изображения здесь

Добавленные страницы: введите описание изображения здесь

Я перепробовал несколько вещей, но мне не повезло.

Сначала я попытался установить ширину столбца, но не увидел никакой разницы:

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );

wxListView* listBookListView1 = listBook->GetListView();
listBookListView1->SetColumnWidth(0,400); //tried 0,1,-1 for the first parameter

Затем я попробовал SetMinSize, но опять же, без разницы:

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );
listBook->SetMinSize(wxSize(400,500));

Я тоже пробовал SetSize, но без разницы:

listBook = new wxListbook( this, ID_LISTBOOK, wxDefaultPosition, wxDefaultSize, wxLB_LEFT );
listBook->SetSize(wxSize(200,200));

Каков был бы правильный способ сделать это? Помощь приветствуется.

0

Решение

В настоящее время wxListbook всегда соответствует списку его содержанию. Лично мне очень интересно, почему это должно быть проблемой, в частности, почему вы хотите иметь wxListbook без каких-либо страниц и что это может быть полезно. Но, в принципе, установка минимального размера элемента управления списком должна работать, и если вы можете изменить wxWidgets, чтобы сделать это следующим образом, мы с удовольствием применили бы пластырь Делать это.

Однако сейчас нет способа сделать это, извините.

1

Другие решения

Испытал похожую проблему с wxTreebook, даже подготовил патч для этого, но он был отклонен, потому что потенциально нарушает функциональность пользовательских элементов управления книги.
По умолчанию все пользовательские элементы управления книгой имеют странное поведение, связанное с макетом внутреннего элемента управления селектора (wxListView, wxTreeCtrl и т. Д.)
Если хотите, я могу попытаться найти этот код wxTreebook и отправить его вам. Может быть, вы найдете там что-нибудь полезное.

Возможные решения, которые вы могли бы попытаться исправить это:

  • Добавьте фальшивый элемент, который содержит несколько пробелов, в список, затем покажите рамку, затем удалите этот элемент (быстро и грязно, но я почти уверен, что это будет работать, и представление списка будет иметь ненулевую ширину)
  • Исправьте исходный код wxListbook самостоятельно (wxWidgets имеет открытый исходный код, и вы можете легко изменить исходный код, затем создать исправление и повторно использовать его после обновления до новой версии wxWidgets)
  • Попробуйте изменить MinSize внутреннего wxListView после отображения кадра и вызова Layout ().
1

По вопросам рекламы [email protected]