我在 textBrowser_filename
中打印文件名。但是在 commenting 在 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
谢谢!
最佳答案
关于你的第二个问题,为什么要打印.
和..
。那是因为它们是当前目录中的文件。它们分别对应于当前目录和父目录。如果您想使用 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'));
关于c++ - 为什么我的qt程序卡住了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46593660/