我在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
谢谢!
答案 0 :(得分:1)
关于您的第二个问题,为什么要打印.
和..
。那是因为它们是当前目录中的文件。它们分别对应于当前目录和父目录。如果您想使用QDir::NoDotAndDotDot
使用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'));