QTreeView將選中的樹形結構複製貼上

2021-08-26 09:31:30 字數 1122 閱讀 9525

首先組織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...