谢谢你的回答,给了我启发,不过我没用这个实现。
void MyTreeview :: nextImage()
{
QModelIndex currentIndex = dirsTree->currentIndex();
if (dirsModel->isDir(currentIndex))
{
nextFlag = true; //标志位,当前index是dir值为true
dirsTree->setExpanded(currentIndex, 1);
currentIndex = currentIndex.child(0, 0);
}
QModelIndex currentIndexParent = currentIndex.parent(); //当前index的parent索引
QModelIndex currentFolderStartIndex = currentIndex.model()->index(0, 0, currentIndexParent); //当前目录第一个图片的index
qint32 currentFolderTotal = currentIndex.model()->rowCount(currentIndexParent); //当前目录下文件的个数
if (currentIndex.row() == (currentFolderTotal - 1)) //判断是不是最后一个,是就跳出该文件夹
{
QModelIndex jumpIndexParent = dirsTree->indexBelow(currentIndex); //获得跳出的索引
dirsTree->setCurrentIndex(jumpIndexParent);
}
else
{
if(nextFlag)
{
dirsTree->setCurrentIndex(currentIndex);
nextFlag = false;
}
else
{
QModelIndex nextIndex = dirsTree->indexBelow(currentIndex);
dirsTree->setCurrentIndex(nextIndex);
nextFlag = false;
}
}
}
刚开始用QTreeView不熟悉,昨天找到了indexBelow(),indexAbove()这两个函数已经实现了。我做的这个是遇到文件夹就打开它dirsTree->setExpanded(currentIndex, 1),进入这个文件夹,到末尾跳出到下一级,一直一级一级向下走。