Qt基础 QT QTextEdit自动滑动

目录

1.吐槽那些写文章不动脑子的人,不带脑子就别写,误人子弟

2.问题解决:


1.吐槽那些写文章不动脑子的人,不带脑子就别写,误人子弟

最近公司在做一个提词项目,本来对这里功能难易感觉属于一般的,谁知道碰到一个很简单问题,搞了半天,先喷一下百度浏览器 不知道是算法越来越垃圾,还是我检索的有问题,还是说这个问题很难。

我搜的问题是:  结果全出来是尼ma什么东西,我点开一个看代码,有点常识好吗?那个End不用看意思就知道光标移动到文章尾部,还自动滚动,滚尼ma呢。

Qt基础 QT QTextEdit自动滑动_第1张图片

还有这种的自动滚动内容?嗷  你意思我一篇文章我加入一段Text,你直接滚到最后一行?严重标题与内容不符,别用猪脑写文章好不好!!

Qt基础 QT QTextEdit自动滑动_第2张图片

2.问题解决思路:

QTextEdit自动滚动我想到有三种办法

第一种你得算每行的像素值,然后根据整个框像素/单个像素,然后根据光标去++(这种方法太麻烦),

第二种是QScrollBar(其实就是滑动条)

获取QTextEdit的QScrollBar,然后再构造函数算出QScrollBar歩长pageStep和maximum(这里不知道为什么在其他地方算的步长很大),然后就定时器QScrollBar++或者--啦。

第三种使用QScrollBar方法:void QAbstractSlider::triggerAction(QAbstractSlider::SliderAction action)

QAbstractSlider::SliderAction 枚举(无标志)
作用:描述触发滑块动作的方式
成员    值    说明
QAbstractSlider::SliderNoAction    0    无动作
QAbstractSlider::SliderSingleStepAdd    1    向最大值方向移动一个单个步长的距离
QAbstractSlider::SliderSingleStepSub    2    向最小值方向移动一个单个步长的距离
QAbstractSlider::SliderPageStepAdd    3    向最大值方向移动一个页面步长的距离
QAbstractSlider::SliderPageStepSub    4    向最小值方向移动一个页面步长的距离
QAbstractSlider::SliderToMinimum    5    把滑块移至最小值(home 键)
QAbstractSlider::SliderToMaximum    6    把滑块移至最大值(end 键)
QAbstractSlider::SliderMove    7    移动滑块
 

tip算光标位置:

#include
#include
#include

QTextCursor tc = ui.PromptEdit->textCursor();
    //当前光标 
    QTextLayout *lay = tc.block().layout(); 
    int curpos = tc.position() - tc.block().position();
    //当前光标在本BLOCK内的相对位置 
    int textline = lay->lineForTextPosition(curpos).lineNumber() + tc.block().firstLineNumber();
    //int textline = ui.PromptEdit->document()->lineCount(); 好像是从0开始的行号,记不清了,可以调试看看。

你可能感兴趣的:(QT基础,qt)