我希望我的文本光标始终位于 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.
============================================
不是我不能简单地计算行数,因为我有嵌入表格,字体大小也不同。
答案 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}}