我正在尝试使用wxAuiToolBar类替代现有的wxToolbar。

我的初始化工作正常-我什至可以将嵌入/ vector 化的.png文件设置为项目的位图,这确实很酷-但我希望用户能够指定它们的工具栏大小想要(16x16、22x22或32x32)。我认为这意味着为每个工具栏项目调用wxAuiToolBarItem.SetBitmap(),然后调用wxToolBar.Realize()重绘更改。如果有更好的方法可以纠正我!

例如,我有一个带有“新建/打开/保存/打印”按钮的标准"file"工具栏。将这些添加到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?还是有更好的方法来调整工具栏的大小?

最佳答案

好的,所以这可能是一个分为两个部分的问题:

  • 创建wxAuiToolBarItem后,如何获得它?
  • 创建工具栏后更改其大小的最佳方法是什么?

  • 我可以使用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()方法。这似乎确实可行,因为我可以在大小位图之间切换而不会出现问题。这是最好的方法吗?不知道。

    关于wxwidgets - 如何从wxAuiManager中找到wxAuiToolBarItem?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10440204/

    10-11 02:20