如何从wxAuiManager中找到wxAuiToolBarItem?

时间:2012-05-03 22:31:15

标签: wxwidgets wxauitoolbar

我正在尝试将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?或者有更好的方法来调整工具栏的大小吗?

1 个答案:

答案 0 :(得分:1)

好吧,也许这可能是一个由两部分组成的问题:

  1. 如何在创建wxAuiToolBarItem后获取它?
  2. 创建工具栏后更改工具栏大小的最佳方法是什么?
  3. 我可以使用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()作为params传入AddTool()方法。这似乎有效,因为我可以毫无问题地在小位图和大位图之间切换。这是最好的方式吗?不知道。