25.自定义ItemModel到QTreeview--Apple的学习笔记

一,前言

之前15. QT自定义ItemModel的方法--Apple的学习笔记已经学习过自定义模型,只是自己没实践过。有点云里雾里的。

二,需求

实践从数据库获取到数据,建立自定义itemModel,并且绑定到treeview上显示。

三,遇到的问题

  1. 如何添加一个主节点的第一层级内容?
    // 主节点最后一行加入一个item项
    QModelIndex insertIndex;
    insertIndex = model->index(model->rowCount(),0);
    // 插入一个容器位置
    model->insertRow(model->rowCount(),insertIndex);
    // 为此位置设置值,注意 此处model数量已经加1,所以要减去1
    model->setData(model->index(model->rowCount()-1, 0), QVariant("数据类型"), Qt::EditRole);
  1. 如何以第一层级为node继续添加第二层级?
    答:右键添加接口点击ok后,就发送信号,执行如下。
void MainWindow::insertval(QString val)
{
    QModelIndex insertIndex1;
    insertIndex1 = model->index(2,0);//接口节点抬头
    // 在接口抬头节点最前端添加新接口
    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建立数据,我从sql建立数据。sqlite的数据库参考24. QTableview界面设置--Apple的学习笔记
本次主要练习的是sql数据绑定到自定义模型后,能显示到treeview,并且右键可以添加新接口。

image.png

五,小结

我直接写model还是有问题,它连标题栏都没显示出来。最后是基于QT案例修改的,所以我之后还要再研究下,主要是调用关系不清楚,应该看下QT帮助及QT源码,去了解各类调用关系。

你可能感兴趣的:(25.自定义ItemModel到QTreeview--Apple的学习笔记)