Создание виджетов в панели основного фрейма - PullRequest
0 голосов
/ 02 мая 2020

первый. Я создал Panel с именем DataViewPanel class в класс AGUIFrame, я хочу использовать этот класс Panel для управления частью GUI Frame.

file.h

 class DataViewPanel : public wxPanel
        {
        public:
            DataViewPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
        };
        //DECLARE_EVENT_TABLE()
    };

file. cpp

  AGUIFrame::AGUIFrame(wxWindow* parent, int id, const wxString& title, const wxPoint& pos, const wxSize& size)
        : wxFrame(parent, id, title, pos, size)
    { 
        wxPanel* dataViewPanel = new DataViewPanel(this, -1, wxDefaultPosition, wxDefaultSize);
    }

    AGUIFrame::DataViewPanel::DataViewPanel(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size)
        : wxPanel(parent, id, pos, size)
    {
        wxBoxSizer* topSizer = new wxBoxSizer(wxHORIZONTAL);

        topSizer->Add(new wxButton(this, wxID_OK, "OK"),
            0,           // make horizontally unstretchable
            wxALL,       // make border all around (implicit top alignment)
            10);
        topSizer->Add(new wxButton(this, wxID_OK, "Button 1"), 0, wxALL, 10);
        topSizer->Add(new wxButton(this, wxID_OK, "Button 2"), 0, wxALL, 10);
}

Однако, когда я создаю 3 кнопки в DataViewPanel, затем скомпилирую, чтобы показать только одну кнопку.

enter image description here

помогите мне показать 3 кнопки панели в Gui Рамка

1 Ответ

1 голос
/ 02 мая 2020

Вам необходимо связать свой sizer с панелью, без вызова SetSizer(topSizer) вызов sizer не используется, и, следовательно, все кнопки остаются наложенными друг на друга в их расположении по умолчанию вместо того, чтобы быть правильно размещенным им.

...