c++ - 左键单击时QT QTextBrowser禁用写入位置
问题描述
我正在编写一个 QT 应用程序,其中包括QTextBrowser
.
当应用程序执行某些功能时,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();
}
推荐阅读
- pandas - 为什么我得到“NoneType”对象没有属性“absolute_links”错误?
- laravel - 无法安装 Voyager - 使用 ssh 密钥进行身份验证时克隆失败,请输入您的 GitHub 凭据以访问私有存储库
- pyspark - Pyspark - 使用“useHeader”、“false”读取 excel 数据的问题
- react-query - 如何使用 React-Query 等待某些东西?
- java - SpringBootTest 失败 - 为什么在单个应用程序测试中 schema.sql 和 data.sql 执行两次?
- javascript - D3.js如何附加本地图像
- nim-lang - 为什么相同的字符串在 Nim 中不相等?
- arrays - 如何在c中将字符串转换为单个字母char
- android - 在 MI、realme 设备的默认消息应用程序中,Firebase 动态链接不可点击
- reactjs - 如何更改 material-ui 选择中下拉图标(箭头)的位置?