
复选框是一个带标签的框,有2态复选框和3态复选框。
1.默认为两态复选框(wxCHK_2STATE):选中(wxCHK_CHECKED)或未选中(wxCHK_UNCHECKED)。可以通过 GetValue函数获取状态。
2.复选框也可以有有三种状态,称为混合或未确定状态(wxCHK_UNDETERMINED)。
2.1通过wxCHK_3STATE标志创建一个三态复选框;
2.2默认情况下,用户无法将三态复选框设置为第三态,使用wxCHK_ALLOW_3RD_STATE_FOR_USER标志允许用户通过单击将复选框设置为第三状态。
2.3通过Get3StateValue()函数获取状态值
3.通过wxALIGN_RIGHT标志,可以使文本出现在复选框的左侧。
class Simple:public wxFrame
{
public:
Simple(const wxString& title);
protected:
void OnToggle(wxCommandEvent& event);
void cbThreeState_OnToggle(wxCommandEvent& event);
wxCheckBox* cbNormal;
wxCheckBox* cbThreeState;
wxStaticText* st;
};
Simple::Simple(const wxString& title)
:wxFrame(NULL,-1,title)
{
SetBackgroundColour(*wxLIGHT_GREY);
st = new wxStaticText(this,-1," ");
cbNormal = new wxCheckBox(this,-1,"checkbox1");
cbNormal->SetValue(false);
cbNormal->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED,Simple::OnToggle,this);
// Bind(wxEVT_COMMAND_CHECKBOX_CLICKED,Simple::OnToggle,this,cb1->GetId());
cbThreeState = new wxCheckBox(this,-1,"3 states",wxPoint(-1,-1),wxSize(-1,-1),wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER);
cbThreeState->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED,Simple::cbThreeState_OnToggle,this);
wxBoxSizer* szMain = new wxBoxSizer(wxVERTICAL);
szMain->Add(st,0,wxEXPAND|wxALL,10);
szMain->Add(cbNormal,0,wxEXPAND|wxALL,10);
szMain->Add(cbThreeState,0,wxEXPAND|wxALL,10);
SetSizer(szMain);
Centre();
}
void Simple::OnToggle(wxCommandEvent& event)
{
if(cbNormal->GetValue()){
st->SetLabel("Checked");
}else{
st->SetLabel("UnChecked");
}
}
void Simple::cbThreeState_OnToggle(wxCommandEvent& event)
{
st->SetLabel(wxString::Format("Three State = %i",cbThreeState->Get3StateValue()));
}


被折叠的 条评论
为什么被折叠?



