我正在写一个包含QTextBrowser
的QT应用程序。
当应用程序执行某些功能时,该功能在QTextBrowser
中打印线条,并且在写入线条时,如果我在QTextBrowser
上的任何打印行上按下鼠标左键,应用程序将重新打印我按下该行的行。
怎么预防?
例:
设备用户:xvalid 1
设备型号:alpha 16
设备名称:Samsoni
工作阶段:16级
设备用户:xvalid 1
设备型号:alpha 16设备名称:Samsoni
工作阶段:16级
如你所见,该应用程序将重新设置我按下的开始写入点
文档表明,当你使用insertHtml()
时,它类似于:
edit->textCursor().insertHtml(fragment);
也就是说,HTML被添加到光标所在的位置,当您用鼠标按下时,光标移动到您单击的位置。
解决方案是将光标移动到结尾:
QTextCursor cursor = your_QTextBrowser->textCursor(); // get current cursor
cursor.movePosition(QTextCursor::End); // move it to the end of the document
cursor.insertHtml(text); // insert HTML
例:
#include <QApplication>
#include <QTextBrowser>
#include <QTimer>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextBrowser w;
int counter = 0;
QTimer timer;
QObject::connect(&timer, &QTimer::timeout, [&w, &counter](){
QString text = QString::number(counter);
// at html
QTextCursor cursor = w.textCursor();
cursor.movePosition(QTextCursor::End);
cursor.insertHtml(text);
counter++;
});
timer.start(1000);
w.show();
return a.exec();
}