25.自定义ItemModel到QTreeview--Apple
2021-08-15 本文已影响0人
applecai
一,前言
之前15. QT自定义ItemModel的方法--Apple的学习笔记已经学习过自定义模型,只是自己没实践过。有点云里雾里的。
二,需求
实践从数据库获取到数据,建立自定义itemModel,并且绑定到treeview上显示。
三,遇到的问题
- 如何添加一个主节点的第一层级内容?
// 主节点最后一行加入一个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);
- 如何以第一层级为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,并且右键可以添加新接口。
五,小结
我直接写model还是有问题,它连标题栏都没显示出来。最后是基于QT案例修改的,所以我之后还要再研究下,主要是调用关系不清楚,应该看下QT帮助及QT源码,去了解各类调用关系。