0

我正在使用 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 上运行良好

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

谢谢夏娃

4

1 回答 1

0

在 wxWidgets 2.8.12 上,打开 setup.h,找到 wxMAC_USE_NATIVE_TOOLBAR 并设置如下:

#define wxMAC_USE_NATIVE_TOOLBAR 1

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

于 2013-11-26T18:24:55.497 回答