首先組織qtreeview中每一項的資料結構,將要顯示在qtreeview中的每一項的類定義為
class treeitem : public qobject
;
//節點樹中選中節點觸發的複製貼上按鈕事件
void distreeview::oncopypastenode()
void distreeview::copynode(treeitem *pcurrentitem,treeitem *paddnoderoot)
qstring strtagname = pcurrentitem->data(tagnamecol).tostring();
qstring strconfigvalue = pcurrentitem->data(configvalcol).tostring();
qstring strvaldomain = pcurrentitem->data(valdomaincol).tostring();
qstring strdefault = pcurrentitem->data(defaultvalcol).tostring();
qstring strtagtype = pcurrentitem->data(tagtypecol).tostring();
qlistdata;
data.clear();
dataischecked());
int rootcount = pcurrentitem->childcount();
for(int index = 0; index < rootcount; index ++)
}
本**可用於普通樹的複製貼上,遞迴的內容在於每次將新建的節點作為下次新節點的父節點,相當於將樹結構旋轉90度,兩顆要複製的樹是屬於兄弟樹,源樹只提供樹的內容,不對源樹做任何操作,只是在新樹上進行插入。
之前有bug的原因在於以下幾點:
對源樹進行除提供資料以外的操作,導致在源樹的節點上有新增添的節點內容。
在遞迴時將根節點作為每次的父節點,這樣導致並不能構成層級關係,而是在原來的根目錄上進行插入,應該是每次新新增的節點都是上次節點的子節點,如果該節點沒有子節點,那麼從兄弟節點又開始遞迴,直到達到最右邊的葉子節點。
QTreeView 滑鼠滑過選中整行效果
最近做專案遇到了這個問題,在網上查了很多資料並沒有看到自己想要的效果,你可以重寫model以及委託,不過對於顯示我沒有太多的自定義要求,這樣寫太過於麻煩,後來突然發現了這個屬性 show decoration selected 1 該屬性控制選中時是選中整項還是僅僅只是項的文字,而輔助控制 子元件 ...
checkbox將選中的資料提交到後台
在專案中有些地方需要批量新增的資料,在這裡使用到checkbox比較方便一些。例如 我需要將多個包新增到同乙個地區的 主要的前端 這個是用來放checkbox的。通過ajax來得到資料庫的資料,迴圈寫出checkbox把資料綁上去。function getallservicepacks 這裡的得到選...
QTreeView改變項高的方法
有時我們想改變 qtreeview 檢視的資料項的行高,那怎麼辦呢?今天在這裡介紹兩種改變行高的方法 1.通過更改 qtreeview 的預設delegate 的方法 class cdelegate public qstyleditemdelegate protected qsize sizehin...