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

QTextEdit如何将当前选定的文本行保持在屏幕上的相同位置,qt,cursor-position,qtextedit,Qt,Cursor Position,Qtextedit,我希望文本光标始终位于QTextEdit的同一垂直位置 例如,假设我有(*i*=光标,==分隔编辑框)。假设*I*距离顶部20像素 ============================================ Today is a nice weather I wanted to go *I*for a walk. But finaly got caught in a rain. ============================================ 现在,如果

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

例如,假设我有(*i*=光标,==分隔编辑框)。假设*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.
============================================

并不是说我不能简单地从中数行,因为我有嵌入的表格,字体大小也不同

通过连接信号
cursorPositionChanged(),您可以直接操纵滚动条的位置(
QTextEdit::verticalScrollBar()
),以将光标位置(
QTextEdit::cursorRect()
)相对于窗口保持在所需的
TargetPosition
QTextEdit的
到如下插槽:

void moveScrollBar() {
    int cursorY = textEdit->cursorRect().top();
    QScrollBar *vbar = textEdit->verticalScrollBar();
    vbar->setValue(vbar->value() + cursorY - targetYPosition);
}