我花了一天时间弄清楚如何获得一个wxRibbon吧。这需要一些工作,但我终于有一个功能区吧。除了我的应用程序右侧的一个小空间外,带状条占据了整个窗口。
我在主窗口中测试的代码如下:
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。任何帮助将非常感激!谢谢你的阅读。
答案 0 :(得分:1)
我建议您查看位于wxdir\samples\ribbon
的wxWidgets安装中的功能区示例。它看起来与你的代码大致相同,关键区别在于它将wxRibbonBar添加到sizer中:
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);
你需要这样做,因为如果对话框上有一个控件,它会自动填充对话框,在你的情况下这是不受欢迎的行为。