5

我的 Gui 中有一个 Qt“文本编辑”小部件,这个小部件用于记录某些内容。我以这种方式添加每一行:

QString str;
str = ...
widget.textEdit_console->append(str);

通过这种方式,文本编辑高度将在每一行之后越来越多。在这种情况下,我希望它像一个终端一样,我的意思是在输入一些(我设置的)行之后,对于每个新行,删除文本编辑的第一行以防止它太大!我应该在输入每个新行时使用计数器并在计数器到达顶部后删除第一个计数器还是有更好的方法在之后自动执行此操作

widget.textEdit_console->append(str);

叫?

4

3 回答 3

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);
}

我仍然不知道在使用“文本编辑”时是否有更好的优化方式

于 2013-04-14T15:32:13.407 回答
0

此代码将光标移动到第一行,然后选择它直到行尾,接下来它将删除该行:

widget.textEdit->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
widget.textEdit->moveCursor(QTextCursor::EndOfLine, QTextCursor::KeepAnchor);
widget.textEdit->textCursor().deleteChar();
widget.textEdit->textCursor().deleteChar();
于 2013-04-14T15:32:55.660 回答
0

一种简单的方法是关闭垂直滚动条:

 textEdit_console->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
于 2013-04-14T10:18:16.160 回答