如何使用Qt读取文件并快速显示?
我必须使用Qt显示一个文件的上下文,该文件的大小为70M,但速度太慢,需要几分钟才能显示出来如何使用Qt读取文件并快速显示?,qt,file,Qt,File,我必须使用Qt显示一个文件的上下文,该文件的大小为70M,但速度太慢,需要几分钟才能显示出来 QFile file("farey.txt"); file.open(QFile::ReadOnly | QFile::Text); QTextStream ReadFile(&file); while (!ReadFile.atEnd()) { QString line = ReadFile.readLine(); u
QFile file("farey.txt");
file.open(QFile::ReadOnly | QFile::Text);
QTextStream ReadFile(&file);
while (!ReadFile.atEnd()) {
QString line = ReadFile.readLine();
ui->Output->append(line);
}
file.close();
输出
是文本编辑
,有人能帮我加快速度吗
我可以使用Qt调度默认的系统编辑器来打开文件吗???您的问题可能是逐行追加文件的内容。这会迫使文档在每一行上重复布局,这就是速度减慢的原因。一次性读取整个文件,并使用
setPlainText
在编辑器上进行设置首先,这就足够了:
QFile file("farey.txt");
file.open(QFile::ReadOnly | QFile::Text);
ui->Output->setPlaintText(file.readAll());
第二个-最好的优化在您的情况下,它的逻辑优化。您真的需要显示所有这70M文件吗?如果您想以纯文本显示文件,小部件
QPlainTextEdit
比QTextEdit
更好。它经过优化以处理大型文档,例如,请参见
QTextEdit
是支持富文本的高级所见即所得查看器/编辑器
使用HTML样式标记格式化
QTextEdit
可以显示图像、列表和表格
QPlainTextEdit
是支持纯文本的高级查看器/编辑器
QPlainText
使用的技术和概念与
QTextEdit
,但针对纯文本处理进行了优化
默认情况下,可以使用系统文件处理程序打开文件,例如:
QDesktopServices::openUrl(QUrl::fromLocalFile("file_path"));
有什么方法可以流式处理它吗?您是否尝试过
QPlainTextEdit
?我使用QPlainTextEdit并使用14s显示它。非常感谢,可以使用QDesktopServices
将文件分发到默认系统处理程序。我用这个例子更新了我的答案。我也不能在1分钟内显示出来。还有其他选择吗?我可以使用任何其他对象,唯一的要求是快速显示它。例如,我可以调度一个系统默认编辑器来显示文件吗?可以。我唯一的困难是显示70M大小的文件。我用这个,但不能在1分钟内显示出来。我是否可以使用系统默认编辑器来打开文件,而不是在文本编辑中显示它?
?田彤我认为@RazrFalcon暗示了一次只读取部分文件的可能性。大概你不会一次在屏幕上显示所有70兆字节。所以-你可能只读取实际显示的100K。在大内存芯片出现之前,文字处理器/文本编辑器通常都是这样做的。如果没有太多延迟,我可以读一部分又一部分。但我该怎么办呢?当我使用循环逐行读取时,它会在一个巨大的延迟后显示所有内容,而不是逐行显示line@tian_tong您必须尝试不同的文件读取方法。从文件读取时不必有延迟。可能是您用来读取的方法,例如,第1000行读取所有999行。大约20年前,我在DOS实用程序中这样做了。很遗憾,我把密码弄丢了。非常感谢。这就是我要找的。现在我甚至可以使用emacs快速打开300M文件