主な部分がQPlainTextEditである GUI アプリケーションがあります。アプリケーションのログを表示するために使用され、関連するテキストは行ごとに無限に大きくなります。
アプリケーションは非常に長時間実行することを目的としているため、このログに割り当てられるメモリを制限する必要があります。したがって、到達したときに履歴が切り捨てられることを確認するmaxNumLines
またはmaxNumCharacters
パラメーターが必要です。つまり、新しい行が追加されると、見出し行が削除されます (別名ログローテーション)。
これを達成するために、関数を見つけました
// 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 のサイズの上限を最終的に実装しますか?