QTreeView 使用 QStandardItemModel
文章目录
前言
Qt 模型视图的讲解到处都是,就不废话了。直接说QTreeView使用QsStandardItemModel的基本用法
一、直接上图
二、添加同级结点项
1.思路
1. 通过QTreeView
的currentIndex()
函数,获取当前结点的索引
2. 通过QStandardItemModel
的itemFromIndex()
函数,获取当前结点
3. 通过QStandardItem
的parent()
函数,获取当前结点的父结点
4. 用父结点添加一个新结点
2.实现
代码如下:
// 实例化一个要添加的结点
QStandardItem* item = new QStandardItem(QStringLiteral("新结点"));
// 当前结点的索引
auto curIndex = ui.treeView->currentIndex();
// 无效则直接添加顶级结点
if (!curIndex.isValid())
{
pModel->appendRow(item);
return;
}
// 当前结点
auto curItem = pModel->itemFromIndex(curIndex);
// 当前结点的父结点
auto parentItem = curItem->parent();
// 如果当前结点的父结点为空则是顶级结点
if (!parentItem) {
pModel->appendRow(item);
}
else {
parentItem->appendRow(item);
}
// 设置添加的结点为当前结点
ui.treeView->setCurrentIndex(item->index());
二、添加子结点项
1. 思路
1. 还是先获取当前结点的索引
2. 再获取当前结点
3. 当前结点直接添加一个子结点
2. 实现
代码如下:
// 当前结点的索引
auto curIndex = ui.treeView->currentIndex();
// 无效则不做处理
if (!curIndex.isValid())
{
return;
}
// 实例化一个要添加的结点
QStandardItem* item = new QStandardItem(QStringLiteral("新结点"));
// 当前结点
auto curItem = pModel->itemFromIndex(curIndex);
// 添加到子结点
curItem->appendRow