C++ 更改QTextBrowser中的最后一行

C++ 更改QTextBrowser中的最后一行,c++,qt,qtgui,qtextbrowser,qtextcursor,C++,Qt,Qtgui,Qtextbrowser,Qtextcursor,我有一个QTextBrowser,它显示QString行和Int。这些消息如下所示: 信息a计数器1 信息a计数器2 信息a计数器3 信息b计数器1 我不想总是为计数器的每次递增都追加一行,而只想递增最后一条消息(最后一行)中的Int。最有效的方法是什么 我使用此代码仅删除QTextBrowser中的最后一行: ui->outputText->append(messageA + QString::number(counter)); ui->outputText->move

我有一个
QTextBrowser
,它显示
QString
行和
Int
。这些消息如下所示:

信息a计数器1

信息a计数器2

信息a计数器3

信息b计数器1

我不想总是为计数器的每次递增都追加一行,而只想递增最后一条消息(最后一行)中的
Int
。最有效的方法是什么

我使用此代码仅删除
QTextBrowser
中的最后一行:

ui->outputText->append(messageA + QString::number(counter));
ui->outputText->moveCursor( QTextCursor::End, QTextCursor::MoveAnchor );
ui->outputText->moveCursor( QTextCursor::StartOfLine, QTextCursor::MoveAnchor );
ui->outputText->moveCursor( QTextCursor::End, QTextCursor::KeepAnchor );
ui->outputText->textCursor().removeSelectedText();
ui->outputText->append(messageA + QString::number(++counter));

不幸的是,在删除最后一行后,这留下了一条空行,看起来非常难看。实现这一点的最佳方法是什么,不需要清除整个
QTextBroswer
并再次追加每一行。

这里是我的解决方案,但请注意,它至少需要C++11和Qt5.4来构建和运行。但是,您可以在不使用要求上述版本的
QTimer
的情况下进行复制和粘贴:

main.cpp 构建并运行
您可以删除最后一行并重新结束吗?我可以给你代码,如果这是好的…是的,这就是我要做的。在我的示例中,删除最后一行后,我留下了一个空行,看起来不太好。似乎我唯一缺少的是
textCursor().deletePreviousChar()以清除空行。现在它按预期工作。谢谢。@testus:是的,不用担心:)
#include <QApplication>
#include <QTextBrowser>
#include <QTextCursor>
#include <QTimer>

int main(int argc, char **argv)
{
    QApplication application(argc, argv);
    int count = 1;
    QString string = QStringLiteral("Message a counter %1");
    QTextBrowser *textBrowser = new QTextBrowser();
    textBrowser->setText(string.arg(count));
    QTimer::singleShot(2000, [textBrowser, string, &count](){
        QTextCursor storeCursorPos = textBrowser->textCursor();
        textBrowser->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
        textBrowser->moveCursor(QTextCursor::StartOfLine, QTextCursor::MoveAnchor);
        textBrowser->moveCursor(QTextCursor::End, QTextCursor::KeepAnchor);
        textBrowser->textCursor().removeSelectedText();
        textBrowser->textCursor().deletePreviousChar();
        textBrowser->setTextCursor(storeCursorPos);
        textBrowser->append(string.arg(++count));
    });
    textBrowser->show();
    return application.exec();
}
TEMPLATE = app
TARGET = main
QT += widgets
CONFIG += c++11
SOURCES += main.cpp
qmake && make && ./main