3

我正在尝试使用 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));

既然我已经完成了所有设置,那么在给定与框架关联的成员 wxAuiManager (m_AuiManager) 的情况下,我如何获得给定的 ToolBarItem?或者有没有更好的方法来调整工具栏的大小?

4

1 回答 1

1

好的,所以也许这是一个由两部分组成的问题:

  1. 创建 wxAuiToolBarItem 后如何获取它?
  2. 创建工具栏后更改其大小的最佳方法是什么?

通过使用 wxAuiToolBar->FindTool() 方法,我能够获得 wxToolBarItem。我将工具栏作为成员变量,这使得访问变得相当容易。代码看起来像这样:

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() 方法。这似乎确实有效,因为我可以毫无问题地在小位图和大位图之间切换。这是最好的方法吗?不知道。

于 2012-10-29T00:59:20.907 回答