3

我希望我的文本光标始终位于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.
============================================

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

4

1 回答 1

6

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

void moveScrollBar() {
    int cursorY = textEdit->cursorRect().top();
    QScrollBar *vbar = textEdit->verticalScrollBar();
    vbar->setValue(vbar->value() + cursorY - targetYPosition);
}
于 2012-03-22T23:53:42.400 回答