как изменить wxDataViewListCtrl в соответствии с wxPanel - PullRequest
0 голосов
/ 29 апреля 2020

мой GUIFrame имеет функцию Panel, в первую очередь я хочу расширить окно DataView, но когда я добавляю wxSize в wxDataViewListCtrl * listctrl = new wxDataViewListCtrl (this, -1, wxDefaultPosition, wxSize (350, 600)), затем просто изменение панели и 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);
}

1 Ответ

1 голос
/ 29 апреля 2020

Лучший способ - использовать wxSizer .
Установите размер вашей панели. Добавьте wxDataViewListCtrl к классификатору.

Другой способ - перехватить триггер EVT_SIZE all windows.
Обращайтесь с ним для вашей панели. В этом обработчике получите размер панели и установите его в wxDataViewListCtrl, если вы хотите, чтобы он заполнил всю панель.

...