简介
写在最前面:大佬们勿喷
在实际用途中,我们需要在Treeview上添加节点后需要保持树的展开状态,但是qt的model刷新后,Treeview会自动收起,因此需要自己记录树的状态,并在数据刷新后恢复原来的展开状态
实现
//先记录下节点的展开状态
void MainWindow::GetExpandNode(QModelIndex root)
{
int row = m_model->rowCount(root);
for(int i=0;i<row;i++)
{
QModelIndex index = m_model->index(i,0,root);
if(ui->treeView->isExpanded(index))
{
m_expandnode.push_back(index);
}
GetExpandNode(index);
}
}
//刷新完毕后恢复
void MainWindow::RestExpand()
{
for(auto index:m_expandnode)
{
if(index.isValid())
{
ui->treeView->expand(index);
}
}
m_expandnode.clear();
}