在主框架的面板上创建小部件

问题描述 投票:0回答:1

首先,我在AGUIFrame类中创建了一个名为DataViewPanel的Panel类,我想使用该Panel类来管理GUI框架的一部分。我在AGUIFrame类中创建了一个名为DataViewPanel的Panel类,我想用这个Panel类来管理GUI框架的一部分。

文件.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);
}

但是,当我在DataViewPanel中创建了3个按钮,然后编译成只显示一个按钮。

enter image description here

帮助我在Gui Frame中显示3个面板按钮。

c++ wxwidgets
1个回答
1
投票

你需要将你的sizer与面板关联起来,而不需要将你的sizer与面板关联起来。SetSizer(topSizer) 调用的sizer没有被使用,因此所有的按钮都会在默认位置上相互叠加,而不是被它正确放置。

© www.soinside.com 2019 - 2024. All rights reserved.