25.自定義ItemModel到QTreeview--Apple的學(xué)習(xí)筆記

一,前言

之前15. QT自定義ItemModel的方法--Apple的學(xué)習(xí)筆記已經(jīng)學(xué)習(xí)過(guò)自定義模型,只是自己沒(méi)實(shí)踐過(guò)。有點(diǎn)云里霧里的。

二,需求

實(shí)踐從數(shù)據(jù)庫(kù)獲取到數(shù)據(jù),建立自定義itemModel,并且綁定到treeview上顯示。

三,遇到的問(wèn)題

  1. 如何添加一個(gè)主節(jié)點(diǎn)的第一層級(jí)內(nèi)容?
    // 主節(jié)點(diǎn)最后一行加入一個(gè)item項(xiàng)
    QModelIndex insertIndex;
    insertIndex = model->index(model->rowCount(),0);
    // 插入一個(gè)容器位置
    model->insertRow(model->rowCount(),insertIndex);
    // 為此位置設(shè)置值,注意 此處model數(shù)量已經(jīng)加1,所以要減去1
    model->setData(model->index(model->rowCount()-1, 0), QVariant("數(shù)據(jù)類(lèi)型"), Qt::EditRole);
  1. 如何以第一層級(jí)為node繼續(xù)添加第二層級(jí)?
    答:右鍵添加接口點(diǎn)擊ok后,就發(fā)送信號(hào),執(zhí)行如下。
void MainWindow::insertval(QString val)
{
    QModelIndex insertIndex1;
    insertIndex1 = model->index(2,0);//接口節(jié)點(diǎn)抬頭
    // 在接口抬頭節(jié)點(diǎn)最前端添加新接口
    model->insertRow(0,insertIndex1);
    model->setData(insertIndex1.child(0,0),QVariant(val), Qt::EditRole);
    model->setData(insertIndex1.child(0,1),QVariant("name of interface"), Qt::EditRole);
}

四,效果

我是基于editabletreemodel的QT example code修改的底層。它從txt建立數(shù)據(jù),我從sql建立數(shù)據(jù)。sqlite的數(shù)據(jù)庫(kù)參考24. QTableview界面設(shè)置--Apple的學(xué)習(xí)筆記
本次主要練習(xí)的是sql數(shù)據(jù)綁定到自定義模型后,能顯示到treeview,并且右鍵可以添加新接口。

image.png

五,小結(jié)

我直接寫(xiě)model還是有問(wèn)題,它連標(biāo)題欄都沒(méi)顯示出來(lái)。最后是基于QT案例修改的,所以我之后還要再研究下,主要是調(diào)用關(guān)系不清楚,應(yīng)該看下QT幫助及QT源碼,去了解各類(lèi)調(diào)用關(guān)系。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容