获取QTreeView/Model应用程序中给定项的索引

Mic*_*ent 7 qt

我的Qt桌面应用程序是在editabletreemodel示例应用程序上构建的.在treemodel.cpp中的示例应用程序中,有一个名为getItem()的方法,它将QModelIndex作为参数并返回指向TreeItem的指针.

这是方法的样子:

TreeItem *TreeModel::getItem(const QModelIndex &index) const
{
    if (index.isValid()) {
        TreeItem *item = static_cast<TreeItem*>(index.internalPointer());
        if (item)
            return item;
    }
    return rootItem;
}
Run Code Online (Sandbox Code Playgroud)

我想反过来 - 这是为给定的TreeItem返回一个QModelIndex.

我怎样才能做到这一点?

Gre*_*low 5

困难......非常困难.而且直接不可能.如果你在Qt示例代码中使用TreeItem,那你就不走运了.你能做的是:

  1. 为TreeItem添加唯一标识符
  2. 修改数据函数以获取用户定义角色的唯一ID.您是必须定义此新角色的用户;-)
  3. 使用**QModelIndexList QAbstractItemModel :: match(...)查找TreeItem的索引,该索引返回用户角色的唯一ID.