文件列表和Qt的空结果
File listing and empty result with Qt
我尝试用QFileSystemWatcher监视曲目列表及其子曲目。它工作得很好,但当我捕捉到信号directoryChanged时,路径指向的repository中添加的新文件是未知的。为了知道新文件,当程序启动时,我用QDirIterator列出文件,并将结果存储在QStringList:中
dirIt = new QDirIterator(ui->lineRepProjets->text(), QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
fileList = new QStringList();
while (dirIt->hasNext())
{
qDebug() << "FILE : " << dirIt->fileName();
*fileList << dirIt->next();
}
delete dirIt;
之后,当我接到信号时,我会列出另一个曲目列表,并进行比较。
问题是结果不正确!如您所见,我在qDebug中打印每个找到的文件的fileName。我有这样的结果:
文件:"文件:"你好.txt"文件:"Hello.txt">
而在我的一个剧目中,我有3个文件:"Bonjour.txt"、"Hello.txt"answers"Test.txt">
所以在我的QStringList中,我有一个空字符串,我没有文件"Test.txt",我不明白我的错误在哪里。
谢谢你的帮助!
编辑:
我在你的帮助下解决了我的问题,谢谢!!最后的代码是:
QDirIterator fileIt(ui->lineRepProjets->text(), QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
fileList = new QStringList();
do
{
*fileList << fileIt.next();
} while (fileIt.hasNext());
由于上一个文件没有下一个文件,因此无法获取最后一个文件名。最后一个文件的dirIt->hasNext()
返回false
http://doc.qt.io/qt-4.8/qdiriterator.html#hasNext
也许它很难看,但你可以使用这个代码:
while (dirIt->hasNext())
{
qDebug() << "FILE : " << dirIt->fileName();
*fileList << dirIt->next();
}
qDebug() << "FILE : " << dirIt->fileName();
*fileList << dirIt->next();
问题是您一直在向列表中添加下一个文件名。有一次,迭代器指向最后一个元素后面的元素,因此是空字符串。
我会把循环改为:
do
{
qDebug() << "FILE : " << dirIt->fileName();
*fileList << dirIt->fileName();
dirIt->next();
}
while (dirIt->hasNext());
我认为立即调用next很重要。这应该有效:
QString thePath("./");
QDirIterator it(thePath, QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
QStringList fileList;
while (it.hasNext())
fileList.append(it.next());
相关文章:
- 在 Qt 中解析嵌套的 JSON 时出现意外结果(数组不存在)
- 在单击QT中单击图像时,尝试立即显示用户编辑操作的结果
- 在QT列表中存储DB的查询结果的更好方法
- 通过Qt(mac - OSX)进行的AWS查询没有得到任何结果
- 如何在C 和QT中的另一个窗口中显示MainWindow的结果图像
- QT:在变量中保存SQL-Query的结果,在SQL Query中使用C 变量
- 文件列表和Qt的空结果
- Qt 5.2 DLL返回与应用程序调用DLL不同的结果
- 如何从线程的结果返回Qt对象(Qtfutur)
- Qt - 动态绘制结果
- Qt / QRegularExpression - 无法捕获所有结果,只能捕获第一个实例,为什么?
- 如何使用信号和插槽从qt表单中获取id,然后在链表中搜索它并使用另一个表单显示结果
- 尝试将 QGeoSearchReply 的结果添加到 blackberry 10 Cascades (C++、QT & QML) 中的 maps::D ataProvider
- Qt Creator:如何运行windows批处理文件并获得结果
- QT网络回复不会给我来自PHP脚本的结果
- Qt数据报结构结果:混合序列
- Qt QFileInfo.isDir()返回错误结果
- 在Qt中,Float的加法不能给出精确的结果
- 检索用户选择的结果作为调用Qt中外部程序的输入
- Qt:QProcess 结果与提示时的结果不匹配