如何改变 wxDataViewListCtrl 适合 wxPanel

how to change the wxDataViewListCtrl fit to wxPanel

我的 GUIFrame 有面板功能,首先我想扩展 DataView window,但是当我将 wxSize 添加到 wxDataViewListCtrl* listctrl = new wxDataViewListCtrl(this, -1, wxDefaultPosition, wxSize(350, 600))然后只是 Panel 改变而 Dataview 没有改变;

enter image description here

我想问一下如何改变wxDataViewListCtrl适合wxPanel。

 GUIFrame::GUIFrame(wxWindow* parent, int id, const wxString& title,
    const wxPoint& pos,
    const wxSize& size)
    : wxFrame(parent, id, title, pos, size)
{
    wxWindowUpdateLocker noUpdates(this);
wxMenuBar* m_pMenuBar = new wxMenuBar();
    // File Menu
    wxMenu* m_pFileMenu = new wxMenu();
    m_pFileMenu->Append(wxID_OPEN, _T("&Open"));
    m_pFileMenu->Append(wxID_SAVE, _T("&Save"));
    m_pFileMenu->AppendSeparator();
    m_pFileMenu->Append(wxID_EXIT, _T("&Quit"));
    m_pMenuBar->Append(m_pFileMenu, _T("&File"));
    // About menu
    wxMenu* m_pHelpMenu = new wxMenu();
    m_pHelpMenu->Append(wxID_ABOUT, _T("&About"));
    m_pMenuBar->Append(m_pHelpMenu, _T("&Help"));

    this->SetMenuBar(m_pMenuBar);

wxPanel* dataViewPanel = new DataViewPanel(this, -1);

}

//////////////////////////////////////////////////////////////////////////
//! DataView Panel ////////////////////////////////////////////////////////
GUIFrame::DataViewPanel::DataViewPanel(wxWindow* parent, int ID)
    : wxPanel(parent, ID)
{
    wxDataViewListCtrl* listctrl = new wxDataViewListCtrl(this, -1);
//wxDefaultPosition, wxSize(350, 600));
    listctrl->AppendToggleColumn("");
    listctrl->AppendTextColumn("Text");
    wxVector<wxVariant> data;
    data.push_back(wxVariant(true));
    data.push_back(wxVariant("row 1"));
    listctrl->AppendItem(data);
    data.clear();
    data.push_back(wxVariant(false));
    data.push_back(wxVariant("row 3"));
    listctrl->AppendItem(data);
}

最好的方法是使用 wxSizer
为您的面板设置一个 sizer。将 wxDataViewListCtrl 添加到 sizer。

另一种方法是捕获 EVT_SIZE 所有 windows 触发器。
为您的面板处理它。在此处理程序中获取面板的大小并将其设置为 wxDataViewListCtrl 如果您希望它填充整个面板。