【问题标题】:QTextEdit how to keep currently selected text line at the same position on the screenQTextEdit如何将当前选定的文本行保持在屏幕上的同一位置
【发布时间】: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.
============================================

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

【问题讨论】:

    标签: qt cursor-position qtextedit


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-26
      • 2017-04-16
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      相关资源
      最近更新 更多