1 Duilib中设置和获取控件的自定义属性
在Duilib除了控件已有的属性之外,还可以通过在xml中自定义控件属性字段。
比如
<Button name="example_Btn" width="208" height="38" text="测试按钮" button_status="open"/>
上面的button_status
就是我们自定义的属性,我们可以在代码中通过控件的GetCustomAttribute
函数获取自定义属性,比如
CButtonUI* m_ptr_example_btn = static_cast<CButtonUI*>(m_PaintManager.FindControl("example_Btn"));
std::string button_status_str = m_ptr_example_btn->GetCustomAttribute("button_status");
这个特性在处理Combo
和list
控件非常有用,比如有以下Combo控件
<Combo style="trade_common_combo_style" name="notice_type_combo" font="1400" width="168" height="30" dropbox="bordercolor="#FF4D4D50" bordersize="1" bkcolor="#FF4D4D50"">
<ListLabelElement text="全部" notify_type="0" height="20" selected="true" />
<ListLabelElement text="供股通知" notify_type="1" height="20" />
<ListLabelElement text="权益登记" notify_type="2" height="20" />
<ListLabelElement text="公开配售" notify_type="3" height="20" />
<ListLabelElement text="股份收购" notify_type="4" height="20" />
</Combo>
我们可以通过这种方式,直接拿到ComboBox的Item中的自定义”notify_type”属性,通过判断所选择的combo下的ListLabelElement
的notify_type
直接进行相关操作,而不用去比较ListLabelElement
的text
这种比较粗野的方法,比如
std::string notify_type = "-1";
if (notice_type_combo_) {
auto index = notice_type_combo_->GetCurSel();
if (index < 0 || index >= notice_type_combo_->GetCount()) {
return ;
}
auto item = notice_type_combo_->GetItemAt(index);
if (item == nullptr) {
return ;
}
notify_type = item->GetCustomAttribute("notifyType");
if(notify_type == "1"){
// 写相应的处理代码 ...
}
else if(notify_type == "2"){
// 写相应的处理代码 ...
}
else if(notify_type == "3"){
// 写相应的处理代码 ...
}
else if(notify_type == "4"){
// 写相应的处理代码 ...
}
}
参考链接
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Duilib – 设置和获取控件的自定义属性
原文链接:https://www.stubbornhuang.com/2810/
发布于:2023年09月22日 9:36:47
修改于:2023年09月22日 9:36:47
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50