gpt4 book ai didi

c++ - QTextBrowser:如何突出显示单击的行

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:11 28 4
gpt4 key购买 nike

在我的文本浏览器中,我已经实现了 mousePress 并在单击时找到了行号。现在我想突出显示我单击的位置,即更改其背景颜色。我知道线与 block 不同。幸运的是,在我的文本中,一行是一个 block 。所以我做的是通过游标来操作 block 格式,如下所示:

QTextCursor cur = mytextBrowser->textCursor();
QBlockFormat f;
f.setBackground(Qt::red);
cur.selection(QTextCursor::BlockUnderCursor);
cur.setBlockFormat(f);
cur.setPosition(startPos);//I calculate this startPos before. It's where the cursor should be
mytextBrowser->setTextCursor(cur);

然而,结果很奇怪。当我第一次点击文本时,没有任何反应,有时可能选择了一个词。然后我再次单击,前一行和上面的行将突出显示。我不明白为什么会这样。谁能给我一些解决方案?谢谢。

最佳答案

您的代码甚至无法编译。它使用不存在的 QBlockFormat 类和带有无效参数的 cur.selection。你只是把它从脑子里打出来吗?不管怎样,为什么不使用 LineUnderCursor 呢?以下代码对我来说工作正常:

void MainWindow::on_textBrowser_cursorPositionChanged() {
QTextCursor cur = ui->textBrowser->textCursor();
QTextBlockFormat f;
f.setBackground(Qt::red);
cur.select(QTextCursor::LineUnderCursor);
cur.setBlockFormat(f);
ui->textBrowser->setTextCursor(cur);
}

关于c++ - QTextBrowser:如何突出显示单击的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22698105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com