首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPlainTextEdit截断历史线

QPlainTextEdit截断历史线
EN

Stack Overflow用户
提问于 2012-06-19 09:14:57
回答 2查看 6.2K关注 0票数 15

我有一个GUI应用程序,其主要部分是一个QPlainTextEdit。它用于显示应用程序的日志,因此相关联的文本将无限地逐行增长。

由于应用程序的运行时间很长,我需要限制分配给这个日志的内存。因此,我希望有一些maxNumLinesmaxNumCharacters参数,以确保到达时历史记录将被截断,即当新行被追加时,头行将被删除。原木旋转)。

为了实现这一点,我找到了以下功能

代码语言:javascript
复制
// get the associated text
QString toPlainText () const

// set the associated text
void setPlainText ( const QString & text )

因此,类似于这段未经测试的代码可能会有这样的效果:

代码语言:javascript
复制
QString &tmp = pte.toPlainText();
while (tmp.size() > maxNumCharacters) {
  // remove lines from the head of the string until the desired size is reached
  // removes nothing if "\n" could not be found
  tmp.remove(0, tmp.indexOf("\n")+1);
}
pte.setPlainText( tmp );

这是从QPlainTextEdit中删除第一行的方法吗?是否还有其他更适合此任务的Qt文本GUI元素(设置最大行数并在列表顶部截断),例如以某种方式显示一个QStringList,我可以在其中存储行(s.t )。我可以很容易的erase(0))?

还是QPlainTextEdit最终实现了关联QString大小的上限?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 09:33:53

显然,属性maximumBlockCount正是我所需要的:

如果希望限制QPlainTextEdit中的段落总数(例如,它在日志查看器中很有用),则可以使用maximumBlockCount属性。setMaximumBlockCount()appendPlainText()的结合使QPlainTextEdit成为日志文本的有效查看器。

供参考:

  • http://doc.qt.io/qt-5/qplaintextedit.html#maximumBlockCount-prop
票数 18
EN

Stack Overflow用户

发布于 2012-06-19 09:24:27

一个月前,我遇到了同样的问题,最后我使用了一个QListView。虽然使用模型/视图/委托体系结构比较繁琐,但从长远来看,它的扩展性要好得多。例如,一旦基本架构到位,添加一个只显示错误或警告条目的筛选器就变得非常简单,或者创建一个委托,以便将错误条目的背景漆成红色也很简单。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11097939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档