2009-05-15 5 views
2

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

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

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

ответ

3

Я предполагаю, что вы хотите это для MS Windows, так как вы упоминали стиль BTNS _ AUTOSIZE.

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

+0

Большое спасибо. Я думал о создании нисходящего класса, но хотел знать, есть ли более простое решение. – Wacek

Смежные вопросы