wxToolBar с динамически изменяемыми кнопками - PullRequest
2 голосов
/ 15 мая 2009

Мое приложение (только для Microsoft Windows) использует wxToolBar с установленными флагами wxTB_HORIZONTAL|wxTB_TEXT|wxTB_HORZ_LAYOUT. Все его кнопки / инструменты имеют одинаковую ширину, основанную на самом длинном тексте.

Мне бы хотелось иметь кнопки различной ширины, в зависимости от длины метки инструмента, так же, как кнопки панели инструментов Windows (созданные в стиле BTNS_AUTOSIZE).

Есть ли способ получить wxToolBar с кнопками, которые имеют динамически рассчитанную ширину?

1 Ответ

3 голосов
/ 15 мая 2009

Полагаю, вы хотите это для MS Windows, поскольку вы упоминаете стиль BTNS_AUTOSIZE .

Нет способа сделать это с wxToolBar стилями или параметром AddTool () . Я пробовал с wxMSW, и единственный способ добиться автоматического изменения размера кнопок (который я смог найти) - это изменение метода wxToolBar :: Realize () в src / msw / tbar95.cpp ( src / msw / toolbar.cpp в стволе wxWidgets) для добавления стиля BTNS_AUTOSIZE в местах добавления кнопок. Это виртуальный метод, поэтому вы всегда можете создать собственный нисходящий класс панели инструментов, скопировать метод Realize () и изменить его.

...