【发布时间】:2016-09-08 18:32:21
【问题描述】:
我正在构建一个将读取 gcode 文件的应用程序。文件范围从几 KB 到几百 MB(但这种情况很少见)。用户选择一个文件后,程序会遍历它并逐行读取。这根本不需要很长时间。
我想在 QTextEdit 小部件中显示我刚刚读入的文件的文本。不幸的是,这样做需要很长时间(即使是小文件也需要几秒钟)。
我曾考虑为用户添加一条“正在加载,请稍候”消息,但我想知道是否有办法加快文本加载过程。
现在我的代码如下所示:
QTextStream in(gcodeFile); //The file path was given by the user
ui->textEdit->setText(in.readAll());
in.seek(0);
processGcode();
有没有更好的方法将大量文本加载到不会导致应用挂起的 QTextEdit 中?
注意:问题不在于我两次阅读文件。我更改了我的代码,使其在将文本添加到 QTextEdit 的同时进行处理,但整个过程仍然花费了太长时间。
【问题讨论】:
-
您是否尝试过使用
QPlainTextEdit?它是一个更流畅的小部件,用于显示(和编辑)文本,没有很多QTextEdit携带的内容(请参阅here)。正如描述所述It is optimized to handle large documents and to respond quickly to user input.这似乎是你的情况。 -
哇哦!非常感谢,这是完美的。如果您将此作为答案发布,我会将其标记为正确。
-
在尝试之前不要说万岁。在大多数情况下,
QPlainTextEdit并不比QTextEdit快多少。看看你实际上得到了什么改进(如果有的话)。 -
G 代码是否可以编辑?
-
我试过了,效果很好。 G代码可以编辑,我还没决定