我嘗試使用QFileSystemWatcher來監視彙編列表及其子彙編。它工作正常,但當我捕捉信號directoryChanged時,路徑指向的目錄中添加的新文件是未知的。 要知道新的文件,程序啓動時,我列出了QDirIterator的文件,我把結果保存在一個QStringList中:文件清單和Qt空結果
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。 我有這樣的結果:
文件: 「」 FILE: 「Bonjour.txt」 FILE: 「hello.txt的」
而在我的劇目之一,我有3個文件: 「Bonjour.txt」 ,「Hello.txt」和「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-> fileName();在開始時包含一個空字符串,我不明白爲什麼!這對我來說是一個真正的問題.....要獲得第一個文件名,我必須寫dirIt-> next; qDebug()<< dirIt-> fileName(); !!!! – DeepSiderZ
我編輯了我的第一條消息,我已經解決了我的問題,謝謝! – DeepSiderZ