我发现这很难从搜索中找到,但很简单,如何从面板中删除控件?我有一些 wxStaticText 和 wxTextCtrl,我想交换删除现有项目并用新项目替换它们?有什么命令我可以调用还是我必须自己做点什么?干杯
问问题
3645 次
2 回答
6
编辑:正如 ravenpoint 指出的那样,仅仅删除控件是不够的。一些控件在Destroy()
.
您可以简单地Destroy()
控制。wxWidgets 会自动从父窗口中移除它并释放它的内存。
wxWindow* ctrl = new wxStaticText(this);
ctrl->Destroy();
ctrl = new wxTextCtrl(this);
如果你没有指向控件的指针,你可以使用FindWindowById
,FindWindowByLabel
或FindWindowByName
来获取它:
if(wxWindow* ctrl = wxWindow::FindWindowById(ID_MYCTRL,this))
ctrl->Destroy();
如果控件被添加到一个sizer,它必须在它仍然有效时被替换:
newCtrl = new wxWindow(...);
sizer->Replace(oldCtrl,newCtrl); // both oldCtrl and newCtrl must be valid
oldCtrl->Destroy();
Layout(); // update sizer
或者,您可以从一开始就创建一个 wxTextCtrl 并将其设为只读。但是,需要进行额外的样式修改以使其看起来像 wxStaticText(例如背景颜色、边框等)。
于 2013-01-01T17:31:25.260 回答
1
最简单的做法是隐藏小部件。 http://docs.wxwidgets.org/trunk/classwx_window.html#a7ed103df04014cb3c59c6a3fb4d95328
但是,如果您想永久删除小部件,请调用 Destroy http://docs.wxwidgets.org/trunk/classwx_window.html#a6bf0c5be864544d9ce0560087667b7fc
于 2013-01-01T17:15:42.203 回答