我的Gui中有一个Qt“Text Edit”小部件,这个小部件用于记录某些内容。 我以这种方式添加每一行:
QString str;
str = ...
widget.textEdit_console->append(str);
通过这种方式,文本编辑高度将在每个新行之后越来越多。
我希望它在这种情况下就像一个终端,我的意思是在输入一些数字(我设置)之后,对于每个新行,文本编辑的第一行被删除以防止它太大!
我应该使用一个计数器来输入每一个新行,并在计数器到达顶部之后删除第一个计数器,或者有更好的方法在之后自动执行此操作
widget.textEdit_console->append(str);
叫?
答案 0 :(得分:2)
感谢cmannett85您的建议,但出于某种原因,我更喜欢'文字编辑', 我这样解决了我的问题:
void mainWindow::appendLog(const QString &str)
{
LogLines++;
if (LogLines > maxLogLines)
{
QTextCursor tc = widget.textEdit_console->textCursor();
tc.movePosition(QTextCursor::Start);
tc.select(QTextCursor::LineUnderCursor);
tc.removeSelectedText(); // this remove whole first line but not that '\n'
tc.deleteChar(); // this way the first line will completely being removed
LogLines--;
}
widget.textEdit_console->append(str);
}
在使用“文字编辑”
时,我仍然不知道有更好的方法答案 1 :(得分:0)
一种简单的方法是关闭垂直滚动条:
textEdit_console->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
答案 2 :(得分:0)
此代码将光标移动到第一行,然后选择它直到行尾,接下来它将删除该行:
widget.textEdit->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
widget.textEdit->moveCursor(QTextCursor::EndOfLine, QTextCursor::KeepAnchor);
widget.textEdit->textCursor().deleteChar();
widget.textEdit->textCursor().deleteChar();