Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как подружить wxRibbonBar и плавающие окна wxAui
Форум на CrossPlatform.RU > Библиотеки > wxWidgets
msn
Привет Всем!
Проблема в следующем:
На wxFrame есть wxRibbonBar.
Он вертикальным сайзером помещен в верхнюю часть фрейма.
Нужно добавить wxTreeCtrl и wxAuiNotebook как плавающие окна.
Для размещения использую wxAuiManager.
При попытке сделать это рушится wxRibbonBar.
Вот кусочек кода:
class MainFrame: public wxFrame
{
    wxAuiManager _Manager;
    wxRibbonBar* _StdToolBar;
    wxTreeCtrl* _InfoTree;
    wxAuiNotebook* _Notebook;  

public:
    MainFrame()
        : wxFrame(NULL)
    {
        // Создать wxRibbonBar
        _StdToolBar = new wxRibbonBar(this);
        new wxRibbonPage(_StdToolBar, wxID_ANY, wxT("Examples"));
        new wxRibbonPage(_StdToolBar, wxID_ANY, wxT("QQQ"));
        _StdToolBar->Realise();
        wxSizer* s = new wxBoxSizer(wxVERTICAL);
        s->Add(_StdToolBar);
        SetSizer(s);

       _Manager.SetManagedWindow(this);

       _Notebook = new wxAuiNotebook(this);
        wxPanel* Page1 = new wxPanel(_Notebook, wxID_ANY);
        wxPanel* Page2 = new wxPanel(_Notebook, wxID_ANY);
        _Notebook->AddPage(Page1, _("Page1"));
        _Notebook->AddPage(Page2, _("Page2"));

       _InfoTree = new wxTreeCtrl(this);

        _Manager.AddPane(_Notebook, wxAuiPaneInfo().CenterPane());
        _Manager.AddPane(_InfoTree, wxAuiPaneInfo().Left().Layer(1));
        _Manager.Update();
     }
   // ...
};

Что я делаю неправильно?
Заранее спасибо.
msn
Привет Всем!
Проблема решена с помощью дополнительной панели
Я создал панель и сделал ее родителем _Manager.
class MainFrame: public wxFrame
{
wxAuiManager _Manager;
    wxRibbonBar* _StdToolBar;
    wxTreeCtrl* _InfoTree;
    wxAuiNotebook* _Notebook;  

public:
    MainFrame()
        : wxFrame(NULL)
    {
        // Создать wxRibbonBar
        _StdToolBar = new wxRibbonBar(this);
        new wxRibbonPage(_StdToolBar, wxID_ANY, wxT("Examples"));
        new wxRibbonPage(_StdToolBar, wxID_ANY, wxT("QQQ"));
        _StdToolBar->Realise();
        wxSizer* s = new wxBoxSizer(wxVERTICAL);
        s->Add(_StdToolBar, 0, wxEXPAND);
                          wxPanel* main_panel = new wxPanel(this, wxID_ANY);
        s->Add(main_panel, 1, wxEXPAND);
                          SetSizer(s);

       _Manager.SetManagedWindow(main_panel);

       _Notebook = new wxAuiNotebook(main_panel);
        wxPanel* Page1 = new wxPanel(_Notebook, wxID_ANY);
        wxPanel* Page2 = new wxPanel(_Notebook, wxID_ANY);
        _Notebook->AddPage(Page1, _("Page1"));
        _Notebook->AddPage(Page2, _("Page2"));

       _InfoTree = new wxTreeCtrl(main_panel);

        _Manager.AddPane(_Notebook, wxAuiPaneInfo().CenterPane());
        _Manager.AddPane(_InfoTree, wxAuiPaneInfo().Left().Layer(1));
        _Manager.Update();
     }
   // ...
};

Тема закрыта.
Спасибо за внимание.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.