Как найти wxAuiToolBarItem из wxAuiManager?

Я пробую класс wxAuiToolBar в качестве замены существующего wxToolbar.

Моя инициализация работает нормально - я даже могу установить внедренные / векторизованные файлы.png в качестве растровых изображений для элементов, что действительно здорово - но я бы хотел, чтобы пользователь мог указать, какой размер панели инструментов они хочу (16x16, 22x22 или 32x32). Я думаю, что это означает вызов wxAuiToolBarItem.SetBitmap() для каждого элемента панели инструментов, а затем wxToolBar.Realize(), чтобы перерисовать изменения. Поправь меня, если есть лучший способ сделать это!

Например, у меня есть стандартная панель инструментов Файл с новыми кнопками / открыть / сохранить / распечатать. Они добавляются в член wxAuiManager, например:

auiFileToolBar = new wxAuiToolbar(pFrame, ID_AUIFILETOOLBAR, wxDefaultPosition, wxDefaultSize, wxAUI_TB_DEFAULT_STYLE);
auiFileToolBar->AddTool(ID_TBI_FILE_NEW, _("New"), wxNullBitmap, wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString, NULL);
// ... other toolbar items
auiFileToolBar->Realize();
m_AuiManager->AddPane(auiFileToolBar, wxAuiPaneInfo().Name(_T("File")).ToolbarPane().Caption(_T("File")).Layer(10).Top.Gripper(false));

Итак, теперь, когда у меня все это настроено, как мне получить данный ToolBarItem, учитывая член wxAuiManager (m_AuiManager), связанный с фреймом? Или есть лучший способ изменить размеры панелей инструментов?

1 ответ

Решение

Хорошо, возможно, это был вопрос из двух частей:

  1. Как мне получить wxAuiToolBarItem после его создания?
  2. Какой лучший способ изменить размер панели инструментов после ее создания?

Мне удалось добраться до wxToolBarItem с помощью метода wxAuiToolBar->FindTool(). У меня есть панель инструментов в качестве переменной-члена, что делает доступ довольно простым. Код выглядит примерно так:

wxAuiToolBarItem *tbi;
tbi = pMainFrame->m_AuiToolbar-FindTool(ID_TBI_FILE_NEW);
// do something with the toolbar item
tbi->SetBitmap(random_bitmap_thingy);

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

pMainFrame->m_AuiToolbar->ClearTools();

и затем вызывает m_AuiToolbar->AddTool() с новыми растровыми изображениями, передаваемыми в качестве параметров методу AddTool (). Это действительно работает, так как я могу без проблем переключаться между маленькими и большими растровыми изображениями. Это лучший способ сделать это? Без понятия.

Другие вопросы по тегам