0

我正在将文件名打印在textBrowser_filename. 但是在评论在 textBrowser 中打印文件名的片段时,它运行顺利。那么 Qtcreator 的 textBrowser 中是否有可以打印/存储的文本上限?以下是运行平稳但不运行的代码,如果删除了注释。

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, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
    /*
    while(it.hasNext())
    {
        QString path=it.fileName();
        ui->textBrowser_filename->append(path);
        it.next();
    }
    */
}

如果您能帮我解决另一个问题,那就是,为什么我的文件名还会打印以下内容(已注释),这将是很大的帮助?

sample.txt
.          //why this is printed
helloWorld.png
..         //why this is printed

谢谢你!

4

1 回答 1

1

至于你的第二个问题,为什么...被打印出来。那是因为它们是当前目录中的文件。它们分别对应于当前目录和父目录。如果你想使用QDir::NoDotAndDotDotusing ,你可以忽略它们QDir::setFilter()。但是它们存在并且QDirIterator除非您另有说明,否则它们将迭代它们。

至于你的主要问题,为什么QTextBrowser没有“顺利”运行。我不知道你到底是什么意思。慢吗?它真的有效吗?目录中有多少个文件?

如果它很慢,您可以尝试将所有文​​件名字符串连接成一个,然后才QTextBrowser::append()使用连接的字符串调用。例如:

dir.setFilter(QDir::NoDotAndDotDot); // ignore . and ..
QDirIterator it(dir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
QStringList files;
while (it.hasNext()) {
    files << it.fileName();
    it = it.next();
}
ui->textBrowser_filename.append(files.join('\n'));
于 2017-10-05T20:02:48.153 回答