wxWidgets:按下时wxToolBar按钮的大小错误

时间:2013-05-16 08:40:16

标签: c++ macos wxwidgets

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

结果很好,但是当我按下一个按钮时,位图的大小会发生变化,因为它变得很小甚至不可见。

enter image description here

相同的代码在Windows上以及在Mac OS 10.4上运行良好

这是一个错误还是我做错了什么?是否有另一种方法可以在一个窗口中创建两个单独的工具栏?

由于 伊芙

1 个答案:

答案 0 :(得分:0)

在wxWidgets 2.8.12上,打开setup.h,找到wxMAC_USE_NATIVE_TOOLBAR并按如下所示进行设置:

#define wxMAC_USE_NATIVE_TOOLBAR 1

然后重新构建wxWidgets。请注意,之后嵌入式控件可能无法正常工作。