QTextEdit如何将当前选定的文本行保持在屏幕上的相同位置

时间:2012-03-22 20:52:11

标签: qt cursor-position qtextedit

我希望我的文本光标始终位于 QTextEdit 的垂直位置。

作为一个例子,我想说(* I * = cursor,====分隔编辑框)。可以说 * I * 距离顶部20个像素。

============================================
Today is a nice weather
I wanted to go *I*for a walk. 
But finaly got caught in a rain.
============================================

现在,如果我将光标向下移动。

============================================
I wanted to go for a walk. 
But finaly got *I*caught in a rain.
Damn it.
============================================

不是我不能简单地计算行数,因为我有嵌入表格,字体大小也不同。

1 个答案:

答案 0 :(得分:5)

通过连接信号,您可以直接操作滚动条的位置(QTextEdit::verticalScrollBar()),使光标位置(QTextEdit::cursorRect())相对于窗口保持在所需的targetYPosition。将cursorPositionChanged() QTextEdit void moveScrollBar() { int cursorY = textEdit->cursorRect().top(); QScrollBar *vbar = textEdit->verticalScrollBar(); vbar->setValue(vbar->value() + cursorY - targetYPosition); } 添加到这样的广告位:

{{1}}