2013-01-08 24 views
0

我花了一天的時間弄清楚如何獲得一個wxRibbon欄。它花了一些工作,但我終於有了一個功能區欄工作。除了我的應用程序右側的小空間之外,色帶欄佔據了整個窗口。wxWidgets ribbonBar佔據整個窗口

我用我的主窗口中測試的代碼如下:

Win_app::Win_app(const wxString& title) 
     : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(640, 480)) 
{ 

    wxRibbonBar* mainMenu = new wxRibbonBar(this,-1,wxDefaultPosition,wxSize(20,40)); 


    wxRibbonPage* home = new wxRibbonPage(mainMenu, wxID_ANY, wxT("Home")); 

    wxRibbonPanel *test_panel1 = new wxRibbonPanel(home, wxID_ANY, wxT("Panel 1"), 
              wxNullBitmap, wxDefaultPosition, wxSize(320,60)); 

    wxRibbonPanel *test_panel2 = new wxRibbonPanel(home, wxID_ANY, wxT("Panel 2"), 
              wxNullBitmap, wxDefaultPosition, wxSize(320,60)); 

    wxRibbonPage* page = new wxRibbonPage(mainMenu, wxID_ANY, wxT("Another Page")); 

    wxRibbonPanel *test_panel3 = new wxRibbonPanel(page, wxID_ANY, wxT("Panel 3"), 
              wxNullBitmap, wxDefaultPosition, wxSize(640,60)); 


    mainMenu->Realize(); 


    Centre(); 
} 

我使用的wxWidgets 2.9.4。任何幫助將非常感激!謝謝閱讀。

回答

1

我建議看看你的wxWidgets安裝位於wxdir\samples\ribbon的功能區示例。它看起來是做大致相同,你的代碼的關鍵區別在於它增加了wxRibbonBar到分級機:

wxSizer *s = new wxBoxSizer(wxVERTICAL); 

s->Add(m_ribbon, 0, wxEXPAND); 
s->Add(m_logwindow, 1, wxEXPAND); 
s->Add(m_togglePanels, wxSizerFlags().Border()); 

SetSizer(s); 

你必須這樣做,因爲如果有就可以自動填充對話框的單一控制對話框,在你的情況下是不需要的行爲。

+0

甜。 :D那樣做了。我沒有看到我使用的示例代碼中的那一部分。非常感謝,現在我可以繼續進行其餘的程序。 – Legacyblade