我正在使用 wxWidgets 开发一个应用程序,在 Mac Os 10.8.3 上使用 wxMac-2.8.12。我需要添加一个带有单选按钮的工具栏,每个按钮都有一个图标。如果我使用函数 CreateToolBar 创建工具栏,一切正常,但由于我需要添加两个不同的工具栏,一个是垂直的,一个是水平的,第二个我正在使用:
tools_bar = new wxToolBar(this, ID_TOOLBAR2, wxDefaultPosition,
wxDefaultSize, wxTB_NODIVIDER | wxTB_FLAT | wxTB_VERTICAL);
然后我创建不同的按钮并将工具栏添加到 sizer:
wxBitmap* toolsBitmaps[9];
toolsBitmaps[0] = new wxBitmap(icona1_xpm);
toolsBitmaps[1] = new wxBitmap(icona2_xpm);
toolsBitmaps[2] = new wxBitmap(icona3_xpm);
toolsBitmaps[3] = new wxBitmap(icona4_xpm);
toolsBitmaps[4] = new wxBitmap(icona5_xpm);
toolsBitmaps[5] = new wxBitmap(icona6_xpm);
toolsBitmaps[6] = new wxBitmap(icona7_xpm);
toolsBitmaps[7] = new wxBitmap(icona8_xpm);
toolsBitmaps[8] = new wxBitmap(freccia_xpm);
tools_bar->SetToolBitmapSize(wxSize(32, 32));
tools_bar->AddTool(ID_SELEZIONE, _T(""), *toolsBitmaps[8], wxNullBitmap,
wxITEM_RADIO, _T("Selezione"), wxEmptyString);
tools_bar->AddTool(ID_FONDAZIONE_SUPERFICIALE, _T(""), *toolsBitmaps[0],
wxNullBitmap, wxITEM_RADIO, _T("Disegna fondazione superficiale"),
wxEmptyString);
tools_bar->AddTool(ID_MAGLIA_FONDAZIONI, _T(""), *toolsBitmaps[1],
wxNullBitmap, wxITEM_RADIO,
_T("Inserisce maglia di fondazioni superficiali"),
wxEmptyString);
tools_bar->AddTool(ID_LIMITE_STRATIGRAFIA, _T(""), *toolsBitmaps[2],
wxNullBitmap, wxITEM_RADIO, _T("Disegna limite stratigrafia"),
wxEmptyString);
tools_bar->AddTool(ID_PUNTO_CALCOLO, _T(""), *toolsBitmaps[3],
wxNullBitmap, wxITEM_RADIO, _T("Inserisce un punto di calcolo"),
wxEmptyString);
tools_bar->AddTool(ID_GRIGLIA_PUNTI, _T(""), *toolsBitmaps[4],
wxNullBitmap, wxITEM_RADIO,
_T("Inserisce una griglia di punti di calcolo"), wxEmptyString);
tools_bar->AddTool(ID_LINEA_CEDIMENTI, _T(""), *toolsBitmaps[5],
wxNullBitmap, wxITEM_RADIO,
_T("Inserisce una linea per i cedienti differenziali"),
wxEmptyString);
tools_bar->AddTool(ID_GRUPPO_PALI, _T(""), *toolsBitmaps[6], wxNullBitmap,
wxITEM_RADIO, _T("Inserisce un gruppo di pali"), wxEmptyString);
tools_bar->AddTool(ID_PALO, _T(""), *toolsBitmaps[7], wxNullBitmap,
wxITEM_RADIO, _T("Inserisce un palo"), wxEmptyString);
tools_bar->ToggleTool(ID_SELEZIONE, true);
tools_bar->EnableTool(ID_LIMITE_STRATIGRAFIA, false);
tools_bar->EnableTool(ID_LINEA_CEDIMENTI, false);
tools_bar->SetMargins(0, 0);
tools_bar->Realize();
wxBoxSizer* itemBoxSizer10 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer10->Add(tools_bar, 0, wxEXPAND, 0);
结果很好,但是当我按下按钮时,位图的大小会发生变化,因为它变得非常小,甚至不可见。
相同的代码在 Windows 和 Mac OS 10.4 上运行良好
这是一个错误还是我做错了什么?是否有另一种方法可以在一个窗口中创建两个单独的工具栏?
谢谢夏娃