【wxWidgets】wxAddRemoveCtrl添加删除控件
wxAddRemoveCtrl类用于添加按钮以向类似列表的子空间添加和删除项的类
此类表示一个复合控件,该控件将能够显示多个项的任何控件(如 wxListBox、wxListCtrl、wxTreeCtrl、wxDataViewCtrl 或自定义控件)与两个按钮组合在一起,允许从此类似列表的控件中添加项和删除项。 使用此控件而不是直接创建和管理按钮的优点是,此类使用当前平台的正确按钮和布局
此类始终与 wxAddRemoveAdaptor 结合使用,后者用于在按下相应按钮时实际向包含项的控件添加项或从中删除项。对话框示例显示了如何执行此操作:首先,您需要从 wxAddRemoveAdaptor 派生一个新类并实现其纯虚拟方法,然后必须使用此类的新分配对象调用 SetAdaptor
wxAddRemoveCtrl* ctrl = new wxAddRemoveCtrl(parent);
// This can be any kind of control for which OnAdd() and OnRemove()
// below can be made to work.
wxListBox* lbox = new wxListBox(ctrl, ...);
class ListBoxAdaptor : public wxAddRemoveAdaptor
{
public:
explicit ListBoxAdaptor(wxListBox* lbox) : m_lbox(lbox) { }
virtual wxWindow* GetItemsCtrl() const { return m_lbox; }
virtual bool CanAdd() const { return true; }
virtual bool CanRemove() const { return m_lbox->GetSelection() != wxNOT_FOUND; }
virtual void OnAdd() { ... get the new item from user and add it ... }
virtual void OnRemove() { m_lbox->Delete(m_lbox->GetSelection()); }
private:
wxListBox* m_lbox;
};
ctrl->SetAdaptor(new ListBoxAdaptor(lbox));
相关函数
默认构造函数
wxAddRemoveCtrl::wxAddRemoveCtrl()
构造函数
wxAddRemoveCtrl::wxAddRemoveCtrl (wxWindow * parent,
wxWindowID winid = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = 0,
const wxString & name = wxAddRemoveCtrlNameStr )
创建控件函数
bool wxAddRemoveCtrl::Create (wxWindow * parent,
wxWindowID winid = , wxID_ANY
const wxPoint & pos = , wxDefaultPosition
const wxSize & size = , wxDefaultSize
long style = , 0
const wxString & name = wxAddRemoveCtrlNameStr )
设置适配器
将控件与指定的适配器对象关联,必须只调用此方法一次才能完成此对象的初始化。
void wxAddRemoveCtrl::SetAdaptor ()
设置按钮工具提示
设置用于添加和删除按钮的工具提示
当鼠标悬停在分别用于添加和删除项目的按钮上时,显示指定的工具提示
此方法只能在调用 SetAdaptor()后使用
void wxAddRemoveCtrl::SetButtonsToolTips (const wxString &addtip, const wxString &removetip )