如何将wxDataViewListCtrl改成wxPanel?

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

我的GUIFrame有一个Panel功能,首先我想展开DataView窗口,但是当我把wxSize添加到wxDataViewListCtrl* listctrl = new wxDataViewListCtrl(this, -1, wxDefaultPosition, wxSize(350, 600))时,只是Panel改变,而Dataview没有改变。

在这里输入图片描述

我想问一下如何将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);
}
c++ wxwidgets
1个回答
1
投票

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

另一种方法是抓住 EVT_SIZE 所有窗口触发。对你的面板进行处理。在这个处理程序中,获取面板的大小,如果你想让它填满整个面板,就把它设置为wxDataViewListCtrl。

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