为什么QIterator对象对于放置在两个不同位置的同一文件夹的行为有何不同?

时间:2017-10-05 21:30:47

标签: c++ qt c++11 qtextbrowser

我有一个文件夹,里面有以下文件夹/文件 (粗体文件夹)

  

1的 make_file_example

     
    

1.1.main.cpp
    1.2.MakeFile
    1.3.message.cpp
    1.4.message.h

  
     

2.makeFileExample.txt
  3.other_sources.txt
  4.QTnotes.txt

[我在两个不同的位置复制/粘贴了相同的文件夹] 在下面的图像中,您可以清楚地看到放置在不同位置时相同的文件夹给出不同的结果 image1 image2

我使用的代码片段如下:

   void MainWindow::on_pushButton_browse_clicked()
{
    ui->textBrowser_filename->setLineWrapMode(QTextEdit::NoWrap);
    ui->textBrowser_filename->setText("");
    QString dir= QFileDialog::getExistingDirectory(this, tr("Open Directory"),
                                                   "/home",
                                                   QFileDialog::ShowDirsOnly
                                                   | QFileDialog::DontResolveSymlinks);
    ui->lineEdit_dir->setText(dir);
    QDirIterator it(dir, QDir::NoDotAndDotDot | QDir::AllEntries , QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
    while(it.hasNext())
    {
        QString path=it.fileName();
        ui->textBrowser_filename->append(path);
        it.next();
    }
}

1 个答案:

答案 0 :(得分:0)

罪魁祸首是在textBrowser_filename中打印路径后调用while(it.hasNext()) { it.next(); QString path=it.fileName(); ui->textBrowser_filename->append(path); } 函数,更改while循环,如下所示:

hasNext()

如果条目仍然存在,如value.local(); value.hours(); // 18 函数所述,则必须先进行迭代。