gpt4 book ai didi

qt - QPlainTextEdit 按行截断历史记录

转载 作者:行者123 更新时间:2023-12-02 17:10:58 34 4
gpt4 key购买 nike

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

由于应用程序打算运行很长时间,因此我需要限制为此日志分配的内存。因此,我想要一些 maxNumLinesmaxNumCharacters 参数,以确保历史记录在达到时被截断,即在附加新行时删除标题行(又名: 日志轮转)。

为了实现这一点,我找到了函数

// get the associated text
QString toPlainText () const

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

因此像这样未经测试的代码可能会达到目的:

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 Text GUI 元素更适合此任务(设置最大行数并在列表开头截断),例如以某种方式显示一个QStringList,我可以在其中存储这些行(我可以轻松地erase(0))?

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

最佳答案

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

If you want to limit the total number of paragraphs in a QPlainTextEdit, as it is for example useful in a log viewer, then you can use the maximumBlockCount property. The combination of setMaximumBlockCount() and appendPlainText() turns QPlainTextEdit into an efficient viewer for log text.

供引用:

关于qt - QPlainTextEdit 按行截断历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11097939/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com