duilib 自定義屬性列表

2021-07-29 23:08:00 字數 3184 閱讀 3860

好久沒動duilib 了==

duilib 自帶的預設屬性,思想是不錯的,但都知道比較難用,一不小心就所有替換,還來個莫名其妙。

<?xml version="1.0" encoding="utf-8"?>

size="800,572"

sizebox="4,4,6,6"

roundcorner="5,5"

caption="0,0,0,90"

mininfo="800,570">

name="vscrollbar"

value="..."/>

name="hscrollbar"

value="..."/>

bkcolor="#ffd1e8f5"

bkcolor2="#ffc6e0f1"

bordercolor="#ff768d9b"

bordersize="1"

borderround="5,5">

height="24"/>

bkcolor="0xff00ff00"

hscrollbar="true"

vscrollbar="true">

name="my_btn"

pos="40,40,0, 0"

text="my_btn" />

name="my_btn2"

pos="40,80,0, 0"

text="my_btn2" />

name="my_btn3"

pos="40,120,0, 0"

text="my_btn3"/>

name="my_btn4"

pos="40,160,0, 0"

text="my_btn4"/>

horizontallayout>

verticallayout>

window>

效果是這樣的

但是我想要整體效果,這麼多button,就用default吧,在xml新增如下

"button"

value="float="true" height="25" width="60" bkcolor="#fff0f0f0" borderround="5,5" normalimage="button_nor.bmp" hotimage="button_down.bmp" focusedimage="button_over.bmp" "/>

但是看到的效果是

影響到了 標題欄 button 出現異常,收到default 影響,

於是就想,為啥不搞的自由點?

哈哈,,,

自己定義個屬性列表屬性

<?xml version="1.0" encoding="utf-8"?>

size="800,572"

sizebox="4,4,6,6"

roundcorner="5,5"

caption="0,0,0,90"

mininfo="800,570">

name="vscrollbar"

value="..."/>

name="hscrollbar"

value="..."/>

name="button_default"

value="..."/>

bkcolor="#ffd1e8f5"

bkcolor2="#ffc6e0f1"

bordercolor="#ff768d9b"

bordersize="1"

borderround="5,5">

height="24"/>

bkcolor="0xff00ff00"

hscrollbar="true"

vscrollbar="true">

name="my_btn"

pos="40,40,0, 0"

text="my_btn"

attributelist="button_default"/>

name="my_btn2"

pos="40,80,0, 0"

text="my_btn2"

attributelist="button_default" />

name="my_btn3"

pos="40,120,0, 0"

text="my_btn3"

attributelist="button_default"/>

name="my_btn4"

pos="40,160,0, 0"

text="my_btn4"

attributelist="button_default"/>

horizontallayout>

verticallayout>

window>

對應的在每個 button 新增屬性 attributelist=」button_default」 就可以使用上面的 ,

剩下的搞定 **就ok。

1、在解析default的地方 新增乙個 解析attributelist的預設屬性

else

if (_tcsicmp(pstrclass, _t("attributelist")) == 0)

else

if (_tcsicmp(pstrname, _t("value")) == 0)

else

if (_tcsicmp(pstrname, _t("shared")) == 0)

}if (pcontrolname)

}

2、防止再次解析

ccontrolui* cdialogbuilder::_parse(cmarkupnode* proot, ccontrolui* pparent, cpaintmanagerui* pmanager)

}else}}

看下效果

DuiLib實現自定義控制項

在duilib中實現自定義控制項,和qt過載類似,也是繼承原有的控制項只不過是要將這個控制項也能在xml中進行使用。當作xml中的乙個節點。下面就看一下我寫的乙個小例子,這個例子是過載了乙個按鈕 cbuttonui 過載cbuttonui的標頭檔案 subcontrol.h ifndef subco...

自定義列表

自定義列表不僅僅是一列專案,而是專案及其注釋的組合。自定義列表以 標籤開始。每個自定義列表項以 開始。每個自定義列表項的定義以 開始。娛樂明星 港台東南亞明星 內地明星 南韓明星 日本明星 時尚人物 愛綜藝內地綜藝 台灣綜藝 南韓綜藝 時尚生活服務 體育運動健身 追劇狂南韓電視劇集 香港電視劇集美劇...

Duilib建立新增自定義控制項

本篇參考資料 duilib自定義控制項博文 duilib開發基礎 建立自定義控制項的過程 duilib是乙個強大的c 介面庫,相比mfc,它對於程式設計師來說更加友好。不僅易懂易學,做出的介面效果還比較美觀。據悉,現在市面上很多桌面應用都是直接或間接地基於duilib來製作的。這篇博文主要介紹如何把...