可能是一个bug。请阅读webclectic的回答。
如果QFileInfo(filename)缺少'/',QDir::absolutePath会返回父级字符串。就像下面的代码一样。
QFileInfo file("e:/QtExample/mytest/out/res/res1/");
QFileInfo file_no("e:/QtExample/mytest/out/res/res1");
QDir dirFile = file.absoluteDir();
QDir dirFile_no = file_no.absoluteDir();
QString strDirFile = dirFile.absolutePath(); //"E:/QtExample/mytest/out/res/res1
QString strDirFile_no = dirFile_no.absolutePath(); //"E:/QtExample/mytest/out/res
我在我的QTreeView中找到了它。我的代码将从QTreeView::clicked信号调用该槽。
connect(ui.m_pView,SIGNAL(clicked(QModelIndex)),this,SLOT(myClicked(QModelIndex)));
该插槽将获取QModelIndex,然后使用QFileSystemMode::fileInfo获取QFileInfo信息。
QFileInfo rFileInfo = m_model.fileInfo(index);
QDir absDir = rFileInfoDir.absoluteDir();
但是QFileInfo的返回值总是返回"e:/QtExample/mytest/out/res/res",所以如果我调用QFileInfo::absoluteDir获取目录,该目录是"res1"的父目录。因此,我将从期望目录中获取错误的entrylst。
我应该在absoluteFilePath()后面添加'/'来获取正确的QDir吗?
为什么strDirPath等于"E:/QtExample/mytest/out/res/res1",但rDir会列出"res"目录的entrylist?
//rFileInfoDir == E:/QtExample/mytest/out/res/res1
QString strDirPath = rFileInfoDir.absoluteFilePath();
QDir rDir = rFileInfoDir.absoluteDir();