如何改变 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 如果您希望它填充整个面板。
我的 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 如果您希望它填充整个面板。