接上篇:
https://blog.csdn.net/iamqianrenzhan/article/details/86519468
簡介
由于增加了資料庫相關的内容,是以需要先對資料庫表的設計進行介紹
資料庫中共有5個字段,分别是節點uuid,父節點uuid,節點名稱,節點内容,節點是否是目錄
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSdGdUY2UzValXNXlFcGhlYoxmMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL0YTM4ETOwETM3ETMwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
該資訊對應的樹形控件如下:
具體實作
初始化的時候從資料庫中遞歸讀取樹結構
void QMyTreeWidget::RecursiveRead(QTreeWidgetItem *temp, QString fatherid)
{
TemplateTreeLab* tpltl = TemplateTreeLab::get();
QList<TemplateTree> ltplt = tpltl->getTemplateTreeByFatherUuid(fatherid);
for(int i = 0;i<ltplt.size();i++)
{
TemplateTree temptt = ltplt.at(i);
QTreeWidgetItem *child=new QTreeWidgetItem(temp);
QVariant var;
QString str = temptt.getId();
var.setValue(str);
child->setData(0,Qt::UserRole,var);
child->setText(0,temptt.getTitle());
RecursiveRead(child,temptt.getId());
}
}
void QMyTreeWidget::initTreeWidget()
{
this->clear();
//this->setHeaderHidden(true);
QStringList strlist;
strlist.append("cons");
strlist.append("title");
this->setHeaderLabels(strlist);
//從資料庫中讀取目錄結構
//RecursiveRead(this,-1); //this指針可以強制轉換
TemplateTreeLab* tpltl = TemplateTreeLab::get();
QList<TemplateTree> ltplt = tpltl->getTemplateTreeByFatherUuid("-1");
for(int i = 0;i<ltplt.size();i++)
{
TemplateTree temptt = ltplt.at(i);
QTreeWidgetItem *temp=new QTreeWidgetItem(this);
QVariant var;
QString str = temptt.getId();
var.setValue(str);
temp->setData(0,Qt::UserRole,var);
temp->setText(0,temptt.getTitle());
RecursiveRead(temp,temptt.getId());
}
this->expandAll();
}
增加節點
TemplateTree t(str);
t.setFatherId("-1");
t.setTitle(dia.textValue());
t.setIsCategory("1");
TemplateTreeLab* tpltl = TemplateTreeLab::get();
tpltl->addTemplateTree(t);
删除節點:
TemplateTreeLab* tpltl = TemplateTreeLab::get();
tpltl->deleteAllTemplateTree();
this->expandAll();
添加目錄:
TemplateTree t(str);
t.setFatherId(curItem->data(0,Qt::UserRole).toString());
t.setTitle(dia.textValue());
t.setIsCategory("1");
TemplateTreeLab* tpltl = TemplateTreeLab::get();
tpltl->addTemplateTree(t);
添加模闆:
TemplateTree t(str);
t.setFatherId(curItem->data(0,Qt::UserRole).toString());
t.setTitle(dia.textValue());
t.setIsCategory("0");
TemplateTreeLab* tpltl = TemplateTreeLab::get();
tpltl->addTemplateTree(t);
删除所有節點:
TemplateTreeLab* tpltl = TemplateTreeLab::get();
tpltl->deleteAllTemplateTree();
重命名節點:
TemplateTree t(curItem->data(0,Qt::UserRole).toString());
t.setTitle(dia.textValue());
TemplateTreeLab* tpltl = TemplateTreeLab::get();
tpltl->updateTemplateTreeTitlebyUuid(t);
在上面的資料庫操作過程中用到了兩個類,分别是TemplateTree和TemplateTreeLab,關于這兩個類的設計方法,可以參考筆者原來寫的一篇,qt界面程式資料模型使用MYSQL資料庫儲存
https://blog.csdn.net/iamqianrenzhan/article/details/84667926 。 本文涉及到的TemplateTree和TemplateTreeLab類也會上傳,具體下載下傳位址可在評論區找到。
2019年12月9号:
本文不知為何突然稽核未通過,修改的時候提示包含敏感詞,我通篇看了,沒什麼發現,感覺很奇怪,重新釋出一遍。