0

Mac Os 10.8.3 で wxMac-2.8.12 を使用して、wxWidgets でアプリケーションを開発しています。ラジオ ボタンを含むツールバーを追加する必要があり、各ボタンにはアイコンがあります。関数 CreateToolBar を使用してツールバーを作成すると、すべて正常に動作しますが、使用している 2 つ目のツールバーには、垂直と水平の 2 つの異なるツールバーを追加する必要があるため、次のようにします。

tools_bar = new wxToolBar(this, ID_TOOLBAR2, wxDefaultPosition,
        wxDefaultSize, wxTB_NODIVIDER | wxTB_FLAT | wxTB_VERTICAL);

次に、さまざまなボタンを作成し、ツールバーをサイザーに追加します。

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 でも正常に動作します。

それはバグですか、それとも何か間違ったことをしましたか? 1 つのウィンドウに 2 つの個別のツールバーを作成する別の方法はありますか?

ありがとうイブ

4

1 に答える 1

0

wxWidgets 2.8.12 で、setup.h を開き、wxMAC_USE_NATIVE_TOOLBAR を見つけて、次のように設定します。

#定義 wxMAC_USE_NATIVE_TOOLBAR 1

次に、wxWidgets を再構築します。その後、埋め込みコントロールが機能しなくなる可能性があることに注意してください。

于 2013-11-26T18:24:55.497 に答える