2017-10-05 115 views
0

我正在打印文件名textBrowser_filename。但在评论在textBrowser中打印文件名的代码片段运行平稳。那么在Qtcreator的textBrowser里面可以打印/存储哪些文本的上限? 以下是代码,如果评论被删除,它将平稳运行但不是。为什么我的qt程序卡住了?

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

要隐藏点文件要使用的QDir :: NoDotAndDotDot过滤http://doc.qt.io/qt-5/qdiriterator.html#QDirIterator-2 –

+0

不幸的是,应用的QDir后: :NoDotAndDotDot过滤没有打印:( –

+0

我添加它像 'QDirIterator它(DIR,的QDir :: NoDotAndDotDot,QDirIterator ::子目录| QDirIterator ::了FollowSymLinks);' //这是按照定义 –

回答

1

至于你的第二个问题,为什么要打印...。这是因为它们是当前目录中的文件。它们分别对应于当前目录和父目录。如果您想使用QDir::setFilter()使用QDir::NoDotAndDotDot,则可以忽略它们。但它们存在,并且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')); 
+1

这也是我的建议,我怀疑每次添加文本时,整个te xt浏览器必须重新计算其内部状态。但是你没有看到任何事情发生,因为主事件循环没有被调用,所以直到最后才显示UI更新。 –

+0

“顺利”我的意思是没有任何控制台错误,它工作正常。 –

+0

但如果评论被删除比它只是停留和控制台错误说 程序,退出状态1. 结束了没有“慢”如果我的话误含铅你 –

相关问题