crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как подружить wxRibbonBar и плавающие окна wxAui
Гость_msn_*
сообщение 19.10.2010, 16:18
Сообщение #1





Гости








    


Привет Всем!
Проблема в следующем:
На 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_*
сообщение 20.10.2010, 15:07
Сообщение #2





Гости








    


Привет Всем!
Проблема решена с помощью дополнительной панели
Я создал панель и сделал ее родителем _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();
     }
   // ...
};

Тема закрыта.
Спасибо за внимание.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.11.2024, 23:18