24、wxWidgets小部件之wxCheckBox

复选框是一个带标签的框,有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()));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值