QT QTextBrowser 左键单击时禁用写入位置
QT QTextBrowser disable write position when left-click
我正在编写一个包含 QTextBrowser
.
的 QT 应用程序
当应用程序执行某些功能时,该功能会在 QTextBrowser
中打印行,如果我在 QTextBrowser
上的任何打印行上按下鼠标左键,则在写入行时,应用程序会重新开始打印我按下的那行的行。
如何预防?
示例:
- 所有函数输出:
Device user: xvalid 1
Device model: alpha 16
Device name: Samsoni
Working stage: level 16
- 在行打印期间,如果我用鼠标左键按下第二行,将会发生这种情况:
Device user: xvalid 1
Device model: alpha 16 Device name: Samsoni
Working stage: level 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();
}
我正在编写一个包含 QTextBrowser
.
当应用程序执行某些功能时,该功能会在 QTextBrowser
中打印行,如果我在 QTextBrowser
上的任何打印行上按下鼠标左键,则在写入行时,应用程序会重新开始打印我按下的那行的行。
如何预防?
示例:
- 所有函数输出:
Device user: xvalid 1
Device model: alpha 16
Device name: Samsoni
Working stage: level 16
- 在行打印期间,如果我用鼠标左键按下第二行,将会发生这种情况:
Device user: xvalid 1
Device model: alpha 16 Device name: Samsoni
Working stage: level 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();
}