QTextEdit如何将当前选定的文本行保持在屏幕上的同一位置
Posted
技术标签:
【中文标题】QTextEdit如何将当前选定的文本行保持在屏幕上的同一位置【英文标题】:QTextEdit how to keep currently selected text line at the same position on the screen 【发布时间】:2012-03-22 20:52:11 【问题描述】:我希望我的文本光标始终位于 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.
============================================
并不是说我不能简单地计算行数,因为我有嵌入的表格,而且字体大小也不同。
【问题讨论】:
【参考方案1】:您可以通过连接@987654325 的信号cursorPositionChanged()
直接操纵滚动条的位置(QTextEdit::verticalScrollBar()
),以将光标位置(QTextEdit::cursorRect()
)相对于窗口保持在所需的targetYPosition
@ 到这样的插槽:
void moveScrollBar()
int cursorY = textEdit->cursorRect().top();
QScrollBar *vbar = textEdit->verticalScrollBar();
vbar->setValue(vbar->value() + cursorY - targetYPosition);
【讨论】:
以上是关于QTextEdit如何将当前选定的文本行保持在屏幕上的同一位置的主要内容,如果未能解决你的问题,请参考以下文章